2019年5月12日 星期日

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

C語言 例題5-4 利用 二階 Runge-Jutta 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 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

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...