虽然Matlab可以很方便的进行微分方程的求解,但笔者一直好奇怎样实现用C语言去实现一个微分方程的求解。
所以笔者挑选了一个比较简单的方程进行实现dy/dx=y+x,我采用的方法比较简单,通俗来讲就是斜率公式。高中
时候我们学过两点之间的斜率,(y2-y1)/(x2-x1)=k,其中k是斜率,根据dy/dx=y+x, 于是我们有(y2-y1)/(x2-x1)=y+x,
将上式改为,迭代的形式于是有(yk+1 -yk)=f(x)*(x2-x1),其中f(x)=dy/dx=y+x,如果为我们知道初值和迭代的所需
步长,我们就可以用C语言来实现了。
代码:
#include <stdio.h> //equation:y'=y+x, //initial value y(0)=0 int main(void){ float x,y=0; float h=0.2; //set steps float k; printf("Euler:x=%f, y=%f ",0,0); for(int i=1;i<1/h;++i){ x=(i-1)*h; k=x+y; y=y+h*k; printf("Euler:x=%f, y=%f ",x+h,y); } getchar(); return 0; }