2019年5月12日 星期日

C語言 例題5-4 利用 二階 Runge-Kutta Method 求ODE y'=-y+x+1 y(0)=1 , 0<= t <=1 取 h=0.2

C語言 例題5-4 利用 二階 Runge-Kutta Method   求ODE y'=-y+x+1  y(0)=1 , 0<= t <=1    取 h=0.2

/***********************************************
****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 f(float x, float y)
{
    return -y+x+1;
}

int main()
{
    int n,i;
    float x,xf,y,h,s,s1,s2;
    x=0;
    xf=1.0;
    h=0.2;
    y=1.0;
 
    printf("%d. y(%0.2lf)=%2.6lf\n",0,x,y);
    i=1;
    while(x<xf)
    {
        s1=f(x,y);
        s2=f(x+h,y+h*s1);
        s=(s1+s2)/2;
        y=y+(h*s);
     
        printf("%d. y(%0.2lf)=%2.6lf\n",i,x+h,y);
        x=x+h;
        i++;
    }
return 0;
}

輸出畫面
0. y(0.00)=1.000000
1. y(0.20)=1.020000
2. y(0.40)=1.072400
3. y(0.60)=1.151368
4. y(0.80)=1.252122
5. y(1.00)=1.370740

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...