ラプラス変換を知っていれば,代数方程式に直して求めることもできるかと思いますが,数値計算せよということでしょうか?
これを解くなら簡単なオイラー法のCプログラムをお教えします.
#include<stdio.h>
main()
{
double x, y, t, dx, dy dt, a1 = 2.0, a2 = 0.5, a3 = 1.0;
FILE *fp; /* ファイルポインタ */
/* データ保存用ファイルのオープン */
if((fp=fopen("datafile.dat","wt"))==NULL){
printf("Can't open datafile.dat!!\n");
exit(1); /* ファイルがオープンできなければエラー終了 */
}
x = 1; /* xの初期値 */
y = 10; /* yの初期値 */
dt = 0.1; /* 時間の間隔 */
for(t = 0; t <= 20; t+=dt)
{
fprintf(fp, "%f %f %f\n", t, x, y);
dx = a1 * x - a2 * x * y;
x = x + dt * dx;
dy = a2 * x * y - a3 * y;
y = y + dt * dx;
}
fclose(fp);
return 0;
}
これで動くはずです.
これを実行するとdatafile.datというファイルにt,x,yがダーッと表示されます.これをエクセルにでも貼り付けてグラフ化すれば解の挙動がわかります.
時間間隔はあまり大きくしないでください.誤差が増えます.
それと,初期値を変えながら計算して解が振動的にならないような初期値を決めなさいってことでしょうから,初期値を変えて何度もやってみてください.データを残したいならファイルオープンのところでdatafile.datを適宜変えてください.