日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法

發布時間:2024/1/4 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MATLAB常微分方程數值解

作者:凱魯嘎吉 - 博客園http://www.cnblogs.com/kailugaji/

1.一階常微分方程初值問題

2.歐拉法

3.改進的歐拉法

4.四階龍格庫塔方法

5.例題

用歐拉法,改進的歐拉法及4階經典Runge-Kutta方法在不同步長下計算初值問題。步長分別為0.2,0.4,1.0.

matlab程序:

function z=f(x,y)
z=-y*(1+x*y);
function R_K(h)
%歐拉法
y=1;
fprintf('歐拉法:x=%f, y=%f
',0,1);
for i=1:1/h
    x=(i-1)*h;
    K=f(x,y);
    y=y+h*K;
    fprintf('歐拉法:x=%f, y=%f
',x+h,y);
end
fprintf('
');
%改進的歐拉法
y=1;
fprintf('改進的歐拉法:x=%f, y=%f
',0,1);
for i=1:1/h
    x=(i-1)*h;
    K1=f(x,y);
    K2=f(x+h,y+h*K1);
    y=y+(h/2)*(K1+K2);
    fprintf('改進的歐拉法:x=%f, y=%f
',x+h,y);
end
fprintf('
');
 %龍格庫塔方法
 y=1;
fprintf('龍格庫塔法:x=%f, y=%f
',0,1);
for i=1:1/h
    x=(i-1)*h;
    K1=f(x,y);
    K2=f(x+h/2,y+(h/2)*K1);
    K3=f(x+h/2,y+(h/2)*K2);
    K4=f(x+h,y+h*K3);
    y=y+(h/6)*(K1+2*K2+2*K3+K4);
    fprintf('龍格庫塔法:x=%f, y=%f
',x+h,y);
end

結果:

>> R_K(0.2)
歐拉法:x=0.000000, y=1.000000
歐拉法:x=0.200000, y=0.800000
歐拉法:x=0.400000, y=0.614400
歐拉法:x=0.600000, y=0.461321
歐拉法:x=0.800000, y=0.343519
歐拉法:x=1.000000, y=0.255934

改進的歐拉法:x=0.000000, y=1.000000
改進的歐拉法:x=0.200000, y=0.807200
改進的歐拉法:x=0.400000, y=0.636118
改進的歐拉法:x=0.600000, y=0.495044
改進的歐拉法:x=0.800000, y=0.383419
改進的歐拉法:x=1.000000, y=0.296974

龍格庫塔法:x=0.000000, y=1.000000
龍格庫塔法:x=0.200000, y=0.804636
龍格庫塔法:x=0.400000, y=0.631465
龍格庫塔法:x=0.600000, y=0.489198
龍格庫塔法:x=0.800000, y=0.377225
龍格庫塔法:x=1.000000, y=0.291009
>> R_K(0.4)
歐拉法:x=0.000000, y=1.000000
歐拉法:x=0.400000, y=0.600000
歐拉法:x=0.800000, y=0.302400

改進的歐拉法:x=0.000000, y=1.000000
改進的歐拉法:x=0.400000, y=0.651200
改進的歐拉法:x=0.800000, y=0.405782

龍格庫塔法:x=0.000000, y=1.000000
龍格庫塔法:x=0.400000, y=0.631625
龍格庫塔法:x=0.800000, y=0.377556
>> R_K(1)
歐拉法:x=0.000000, y=1.000000
歐拉法:x=1.000000, y=0.000000

改進的歐拉法:x=0.000000, y=1.000000
改進的歐拉法:x=1.000000, y=0.500000

龍格庫塔法:x=0.000000, y=1.000000
龍格庫塔法:x=1.000000, y=0.303395

注意:在步長h為0.4時,要將for i=1:1/h改為for i=1:0.8/h。

總結

以上是生活随笔為你收集整理的MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。