国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Euler法,梯形法,RK2,RK4對ODE應(yīng)用的matlab代碼和誤差分析及圖像輸出——數(shù)值方法

2023-04-29 01:24 作者:小埋埋土里  | 我要投稿

一次挺滿意的小組合作,記錄一下使用的代碼和過程。事先聲明代碼來自chatGPT,由于CSDN上沒有找到類似的代碼,這也是為以后或許要用到的同學(xué)留個(gè)資源吧。雖然說代碼不是親自寫的,理解還是很容易,順便注明一些我們走的彎路。

數(shù)值方法:

歐拉法:

很容易理解,順帶提一句chatGPT的代碼注釋真的很強(qiáng)大。

歐拉法調(diào)用方法:

(我們作業(yè)內(nèi)的ODE是y'%3D10y(1-y),所以下面的都以這個(gè)ODE為例,再順帶提一句,使用matlab解ODE用dsolve就好。)

本來想解釋一下,但真沒啥解釋的...定義函數(shù),初值,區(qū)間,步長,調(diào)用函數(shù),畫圖,坐標(biāo)軸和圖名,就這些。

歐拉法輸出圖像:


歐拉法圖像


梯形法:

英文是Trapezoidal method,tra pe zo i dal,梯形。

這次tspan是區(qū)間,不懂就看下面輸入案例。

梯形法調(diào)用方法:

梯形法輸出圖像:


梯形法圖像

RK2:

RK2調(diào)用方法:

圖不放了,同上(雖然說調(diào)用方法也類似,我還是把餅遞到嘴邊吧)。

RK4:

RK4調(diào)用方法:

誤差分析:

我們做的誤差分析是得出原函數(shù)在t=1時(shí)的值和數(shù)值方法逼近的值差的絕對值再取對數(shù),聽著有點(diǎn)麻煩啊,寫成式子應(yīng)該是這樣:%5Ctext%7Berror%7D%3D%5Clog%7B%7Cy(1)-y_%7Bm%7D(1)%7C%7D。這里我們將步長設(shè)為自變量,從10的-1到-6次方,誤差為因變量,這樣取對數(shù)后,正常的誤差分析結(jié)果應(yīng)該是幾條斜率不同的直線。

代碼:

誤差分析圖像:

誤差分析圖像

小問答:這里直線的斜率分別為1,2,4,原因是什么?

另外,效果最好的是RK4,我一開始疑惑為什么RK4方法會觸底反彈,chatGPT的解釋是:

使用RK4方法擬合函數(shù)時(shí),有時(shí)在步長減小到一個(gè)值時(shí),隨著步長繼續(xù)減小,誤差反而增大的原因:在RK4方法中,步長的大小會影響擬合精度,通常情況下,減小步長可以提升擬合的精度。然而,當(dāng)步長繼續(xù)減小時(shí),誤差反而增大的原因在于舍入誤差的影響。由于計(jì)算機(jī)存儲浮點(diǎn)數(shù)是有限精度的,當(dāng)步長較小時(shí),函數(shù)的微小變化可能會因?yàn)榫炔蛔愣缓雎?,從而?dǎo)致誤差逐漸累積,最終使得計(jì)算結(jié)果和真實(shí)結(jié)果之間的差距增大。

我也詢問了為什么歐拉法和RK2為什么不會如此,chatGPT解釋是:

歐拉法和RK2方法在同樣的函數(shù)上進(jìn)行數(shù)值積分時(shí),沒有出現(xiàn)這種問題的原因是因?yàn)樗鼈兊挠?jì)算精度相對較低,誤差隨著步長的減小而不是增大。歐拉法和RK2方法都是數(shù)值積分常用的一階顯式方法,與RK4方法相比,它們的計(jì)算復(fù)雜度較低,每次迭代只需要使用一次函數(shù)導(dǎo)數(shù)計(jì)算即可。這種簡單的計(jì)算方式使得它們在處理簡單的函數(shù)時(shí)更加高效。然而,這種高效性也帶來了精度的犧牲。相較于RK4方法的四階精度,歐拉法只有一階,而RK2方法只有二階。因此,在進(jìn)行數(shù)值積分時(shí),它們的誤差通常較大。

一些踩坑:

之后,我們換了一個(gè)新的函數(shù),區(qū)間設(shè)為0到60。我們一開始想用函數(shù)中間的值來對比誤差,即y(30),結(jié)果搞出一個(gè)四不像圖像,具體的就不放了。后來在做報(bào)告前,我們才發(fā)現(xiàn)在誤差分析的代碼中,我們用了例如y_exact(t_euler(end))的函數(shù)。我們將步長,初值,區(qū)間和取值全都換為了新的函數(shù),但就是沒發(fā)現(xiàn)這個(gè)...最后作差是將函數(shù)中間數(shù)值方法的值和原函數(shù)末端值比較,當(dāng)然完全不對了。還是沒有完全理解如此簡單的代碼啊。順帶一提這些迭代的方法,比較函數(shù)末端(end)值其實(shí)應(yīng)該是最能顯示誤差的。

最后看看我們對另一個(gè)函數(shù)做的誤差分析圖吧:

f = @(t, y) -0.051*(y-24);

注意兩個(gè)誤差分析圖的斜率哦!

Euler法,梯形法,RK2,RK4對ODE應(yīng)用的matlab代碼和誤差分析及圖像輸出——數(shù)值方法的評論 (共 條)

分享到微博請遵守國家法律
青田县| 镇原县| 伊春市| 大厂| 黄大仙区| 乐山市| 沙雅县| 新竹县| 元江| 贵南县| 宁强县| 兰州市| 都兰县| 定边县| 柳州市| 鹤峰县| 惠安县| 肥乡县| 芒康县| 恩施市| 甘谷县| 鹤壁市| 密山市| 改则县| 无棣县| 庄浪县| 循化| 壤塘县| 南城县| 英超| 宁远县| 民县| 金平| 奈曼旗| 会同县| 隆昌县| 余庆县| 清水河县| 张家界市| 阿图什市| 溧水县|