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

    代码:

    #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;
    }
    微分方程
  • 相关阅读:
    前缀和
    hdu6290奢侈的旅行
    make_pair
    New Year and Buggy Bot
    STL next_permutation 算法原理和自行实现
    前端面试题集合
    node设置cookie
    黑客与geek
    xss
    node async
  • 原文地址:https://www.cnblogs.com/xuelanga000/p/13461471.html
Copyright © 2020-2023  润新知