計算方法 常微分方程的差分方法實驗

2021-03-18 06:01:51 字數 2055 閱讀 6222

實驗三常微分方程的差分方法實驗

一. 實驗目的

(1)深入理解常微分方程的差分方法的原理,學會用差分方法解決某些實際的常微分方程問題,比較這些方法解題的不同之處。

(2)熟悉matlab程式設計環境,利用matlab實現具體的常微分方程。

二. 實驗要求

用matlab軟體實現尤拉方法、改進的尤拉方法、龍格-庫塔方法和亞當姆斯方法,並用例項在計算機上計算。

三. 實驗內容

1. 實驗題目

(1)取h=0.1,用尤拉方法、改進的尤拉方法、四階龍格-庫塔方法求解初值問題:

並與精確解比較計算結果

a.尤拉方法:

a.編寫檔案euler.m,內容如下所示:

b.bb.編寫檔案f3.m:

c.編寫檔案solvef3(x):

d.執行如下所示:

可見精度是比較粗糙的,具有兩位有效數字;

b.改進的尤拉方法

a.編寫檔案mendeuler.m,內容如下所示:

c.執行如下:

可見部分值具有3為有效數字了

c.四階龍格-庫塔方法

a.編寫檔案rungkuta4.m,內容如下所示:

b.執行如下所示:

(2)分別用二階亞當姆斯預估校正系統、改進的四階亞當姆斯預估校正系統求解初值問題,取,計算。

a.編寫檔案adams2pc.m,即為二階亞當姆斯預估校正系統的程式:

b.編寫改進的四階亞當姆斯預估校正系統的程式,如下所示:

c.編寫檔案f5.m,即為微分方程的程式;編寫檔案solvef5.m,為解函式的程式,用以比較結果:

d.執行

從上面的輸出可以看到ca4(:,2)和ca4的輸出時不同的,前面乙個值輸入矩陣的第二

列;2. 設計思想

要求針對上述題目,詳細分析每種演算法的設計思想。

首先差分方法是一類離散化方法,這類方法將尋求解y(x)的分析問題轉化為計算離散值y的代數問題,使問題得到實質性的簡化;差分方法在解初值問題時採取步進式,進一步將計算模型化歸為僅含乙個變元的代數方程——差分格式

a. 尤拉方法:確定步長,施行離散化手續,用差商代替倒數;

b. 改進的尤拉方法:在尤拉方法的基礎上,改變倒數項,通過首尾兩點的倒數的一半來作為平均倒數,從而改善精度;

c. 龍格-庫塔方法:在每一步上多預報幾個點的斜率,然後將它們加權平均作為平均斜率k*,即該平均斜率將比上面兩種方法更加精確,則有可能構造出更高精度的計算格式;

d. 二階亞當姆斯預估校正系統:充分利用先前計算出來的老資訊來為新資訊服務,期望來達到減少計算量的目的;預報過程採用鬆弛手續,來校正產生的值,使值的精度更高;

e. 改進的四階亞當姆斯預估校正系統:在二階的基礎上,更近一步地改善精度,

更加充分地利用來資訊,又不失二階時的預報校正的優點。

四. 實驗體會

對實驗過程進行分析總結,對比求解常微分方程的不同方法,指出每種演算法的設計要點及應注意的事項,以及自己通過實驗所獲得的對常微分方程的差分方法的理解。

在實驗的過程也是一次對書本進行複習的過程,通過實驗可以更加地理解和學會利用已知的結論來求解初值問題。演算法的計算是建立在使用價值上的,如上面的設計思想中可以看出,每一種演算法的建立都是在滿足一定的實用價值上的,既要有一定的精度,也要控制在一定的計算範圍之內。利用鬆弛手續來提高精度,這種設計是優秀的。

編寫程式時,以前並不是很注意結尾要不要分號,但這個細節有時必須要注意,正如在執行視窗下時,要想得出計算結果是不能帶分號的,假如你帶了分號就會自動換行,提示繼續輸入,如,而當去了分號後就可以執行了;當然這個道理前面幾個實驗已經知道;這次實驗的情況是微分方程是另外存在乙個函式檔案中的,那麼這個檔案的結尾到底要不要分號呢?從習慣上還是提倡寫上分號,假如在這次中忘了寫的話,在其它「.m」檔案中引用該函式時,雖然只是中間結果,但每用一次就好輸出一次,使輸出內容與預知的多了些;

還有一點是,像上面的內容假如直接複製,貼上再執行會出錯,因為把「>>」也複製上了,貼上的「>>」和換行時自動出現的符號在意義上是不同的,故會出錯,不過在最新版本的matlab上就沒有這個問題,在貼上時自動把多出的符號刪去。

實驗中二階亞當姆斯預估校正系統題目中給了兩個初值,從而使得程式更加地簡單,不必利用其它的方法來求得初值再啟動執行。

081數值計算方法 常微分方程 組

科學計算 理論 方法 及其基於matlab的程式實現與分析 微分方程 組 數值解法 1 常微分方程初值問題的數值解法 微分方程 組 是科學研究和工程應用中最常用的數學模型之一。如揭示質點運動規律的newton第二定律 和刻畫迴路電流或電壓變化規律的基爾霍夫迴路定律等,但是,只有一些簡單的和特殊的常微...

計算方法實驗八求解常微分方程的初值問題

實驗八求解常微分方程的初值問題 1 尤拉方法 1 實驗程式 實現尤拉方法matlab函式檔案agui euler.m在matlab命令視窗輸入及實驗結果及操作介面 2 改進的尤拉方法 1 實驗程式 實現改進的尤拉方法的matlab函式檔案agui euler1.m在matlab命令視窗輸入及實驗結果...

常微分方程中常用的解題方法

1 變數分離法,一階常微分方程求解有兩個重要的方法 一是變數分離方法,二是全微分方程及積分因子的方法。其中前者是通過適當的變形及變換,將自變數 自變數的微分和因變數的微分分別置於方程的兩端,然後分別進行積分即可得方程的通解後者則是尋求適當的積分因子,將方程化為通解的恰當方程,進一步得通解。如求方程的...