C言語のプログラムを作るのに困っています。
C言語で、4次のルンゲクッタ法を用いて微分方程式を解くプログラムを作成したいのですが、始めたばかりの初心者で分からないところだらけなので教えてください。 わからないなりに、下のプログラムを作ってみましたがエラーになります。どうすればうまくいくのでしょうか。本当に始めたばかりなので、文?の組立もよくわかりません。できればわかりやすくお願いします。
このプログラムでは微分方程式dy/dx=x^3+4xy+y+2の解を求めようとしています(自分で適当に作った方程式なので、あるのかどうかわかりません)。
そのほかにもy'=2x^2+3xy-1や、y'=sinxcosy, y'=e^xなどいろいろな微分方程式でできるようにしたいのですが、どうやるのでしょうか。
#include <stdio.h>
double f(double x,double y);
int main()
{
double x,y,dx,xmax;
double k1,k2,k3,k4;
FILE *fp;
if ((fp=fopen("result.txt","w"))==NULL)
{
printf("Cannot open result.txt \n");
return 0;
}
dx=0.1; //刻み幅
xmax=100.0; //繰り返し最大
x=1.0; //xの初期値
y=1.0; //yの初期値
f(x,y)=x^3+4xy+y+2;; //関数f(x,y)の定義
for(x=1.0;x<xmax;x+=0.1)
{
k1=dx*f(x,y);
k2=dx*f(x+dx/2.0,y+k1/2.0);
k3=dx*f(x+dx/2.0,y+k2/2.0);
k4=dx*f(x+dx,y+k3);
y=y+(k1+2.0*k2+2.0*k3+k4)/6.0;
printf(" %f %lf \n",x,y);
fprintf(fp," %f %lf \n",x ,y);
}
return 0;
}
お礼
ご紹介ありがとうございます 掲示板で尋ねてみます。