math(0)---微分方程

 虽然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语言来实现了。

代码:

math(0)---微分方程
#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\n",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\n",x+h,y);
    }
    getchar();
    
    return 0;
}
微分方程

 

上一篇:ZOJ4127 Grid with Arrows(欧拉路径的判断)


下一篇:使用迭代法求解二次方程