/***********************************************
****EULER METHOD FOR DIFFERENTIAL EQUATIONS*****
* C語言 例題5-4 利用 二階 Runge-Jutta Method
* 求ODE y'=-y+x+1 y(0)=1 , 0<= t <=1
* 取 h=0.2
*
***********************************************/
#include<stdio.h>
#include<math.h>
float fxy(float x, float y)
{
return -y+x+1;
}
int main()
{
float x0,y0,x1,y1,xn,h,k1,k2;
int ns,i;
x0=0;
xn=1;
y0=1;
ns=5;
h=(xn-x0)/ns;
for(i=0;i<ns;i++)
{
k1=h*fxy(x0,y0);
y1=y0+k1;
x1=x0+h;
k2=h*fxy(x1,y1);
y1=y0+(k1+k2)/2;
printf("i=%d y(%0.2lf)=%0.5lf\n",i,x1,y1);
y0=y1;
x0=x1;
}
return 0;
}
輸出畫面
i=0 y(0.20)=1.02000
i=1 y(0.40)=1.07240
i=2 y(0.60)=1.15137
i=3 y(0.80)=1.25212
i=4 y(1.00)=1.37074
沒有留言:
張貼留言