欧拉折线法解常微分方程C语言,05常微分方程数值解.ppt
05常微分方程數值解.ppt
第五章,常微分方程數值解法,(Numerical s for Ordinary Differential Equations ),常微分方程分為 (1)初值問題 (2)邊值問題,一、初值問題的數值解法,1 引 言,一階常微分方程初值問題的一般形式是,稱 在區域D上對 滿足Lipschitz條件 是指,二、初值問題解的存在性, 考慮一階常微分方程的初值問題 /* Initial-Value Problem */則上述IVP存在唯一解。,只要 在 上連續,且關于 y 滿足 Lipschitz 條件,,即存在與 無關的常數 L 使,對任意定義在 上的 都成立,,要計算出解函數 yx 在一系列節點 a x0 x1 xn b 處的近似值 采用離散化方法。,稱節點間距 為步長, 通常采用等距節點,即取 hi h 常數。,三、初值問題的離散化方法,離散化方法的基本特點是依照某一遞推公式,,值 ,取 。,按節點從左至右的順序依次求出 的近似,如果計算 需用到前r步的值 , ,則稱這類方法為r步方法。,2 歐拉方法 /* Eulers */, 歐拉公式單步顯示公式),向前差商近似導數亦稱為歐拉折線法 /* Eulers polygonal arc */,在假設 yi yxi,即第 i 步計算是精確的前提下,考慮的截斷誤差 Ri yxi1 yi1 稱為局部截斷誤差 /* local truncation error */。,定義,若某算法的局部截斷誤差為Ohp1,則稱該 算法有p 階精度。,定義, 歐拉法的局部截斷誤差,Ri 的主項 /* leading term */,歐拉法具有 1 階精度。,例1 用歐拉公式求解初值問題,取步長 。,解 應用Euler公式于題給初值問題的具體形式為,其中 。,計算結果列于下表可用來檢驗近似解的準確程度。,進行計算,數值解已達到了一定的精度。,這個初值問題的準確解為 ,,從上表最后一列,我們看到取步長, 歐拉公式的改進, 隱式歐拉法 /* implicit Euler */,向后差商近似導數由于未知數 yi1 同時出現在等式的兩邊,不能直接得到,故稱為隱式 /* implicit */ 歐拉公式,而前者稱為顯式 /* explicit */ 歐拉公式。一般先用顯式計算一個初值,再迭代求解。, 隱式歐拉法的局部截斷誤差,即隱式歐拉公式具有 1 階精度。, 梯形公式 /*trapezoid ula */, 顯、隱式兩種算法的平均注的確有局部截斷誤差 ,,即梯形公式具有2 階精度,比歐拉方法有了進步。,但注意到該公式是隱式公式,計算時不得不用到,迭代法,其迭代收斂性與歐拉公式相似。, 中點歐拉公式 /* midpoint ula */,中心差商近似導數假設 ,則可以導出 即中點公式具有 2 階精度。,簡單,精度低,穩定性最好,精度低, 計算量大,精度提高,計算量大,精度提高, 顯式,多一個初值, 可能影響精度,Cant you give me a ula with all the advantages yet without any of the disadvantages,Do you think it possible,Well, call me greedy,OK, lets make it possible., 改進歐拉法 /* modified Eulers */,Step 1 先用顯式歐拉公式作預測,算出注此法亦稱為預測-校正法 /* predictor-corrector */,可以證明該算法具有 2 階精度,同時可以看到它,是個單步遞推格式,比隱式公式的迭代求解過程,簡單。后面將看到,它的穩定性高于顯式歐拉法。,改進的歐拉法,在實際計算時,可將歐拉法與梯形法則相結合, 計算公式為,應用改進歐拉法,如果序列 收斂它的極限便滿足方程,改進歐拉法的截斷誤差,因此,改進歐拉法公式具有 2 階精度,例2,用改進Euler公式求解例1中的初值問題,,取步長 。,解對此初值問題采用改進Euler公式, 其具體形式為計算結果列于下表改進的Euler法,Euler法,通過計算結果得比較可以看出,改進的Euler方法,的計算精度比Euler方法要高。,3 龍格 - 庫塔法 /* Runge-Kutta */,建立高精度的單步遞推格式。,單步遞推法的基本思想是從 xi , yi 點出發,,歐拉法及其各種變形所能達到的最高精度為2階。,以某一斜率沿直線達到 點。, 考察改進的歐拉法,可以將其改寫為斜率 一定取K1 K2 的平均值嗎,步長一定是一個h 嗎,首先希望能確定系數 1、2、p,使得到的算法格式有2階精度,即在 的前提假設下,使得,Step 1 將 K2 在 xi , yi 點作 Taylor 展開Step 2 將 K2 代入第1式,得到,Step 3 將 yi1 與 y xi1 在 xi 點的泰勒展開作比較,要求 ,則必須有這里有 個未知數, 個方程。,3,2,存在無窮多個解。所有滿足上式的格式統稱為2階龍格 - 庫塔格式。,注意到, 就是改進的歐拉法。,為獲得更高的精度,應該如何進一步推廣,其中i i 1, , m ,i i 2, , m 和 ij i 2, , m; j 1, , i1 均為待定系數,確定這些系數的步驟與前面相似。,考慮一階常微分方程初值問題將區域a,b進行分劃,若則,n級顯式Runge-Kutta方法二階Runge-Kutta方法,取n2,記,由此得,另一方面,為使局部截斷誤差為 ,應取,改進的Euler方法,取,中點方法,取,二階Heun方法,取,二級Runge-Kutta方法不超過二階,記,則,因此局部截斷誤差只能達到,三級Runge-Kutta方法,取n3,記,又由于,因此要使局部截斷誤差為 ,必須,Kutta方法,取,三階Heun方法,取,三級Runge-Kutta方法不超過三階,完全類似于二級Runge-Kutta方法的分析,只能達到,三級Runge-Kutta方法的局部截斷誤差,將 和 都展開到 項,易證,四級R-K方法,取n4,局部截斷誤差為Oh5,最常用為四級4階經典龍格-庫塔法 /* Classical Runge-Kutta */ ,附注,二階Runge-Kutta方法的局部截斷誤差 只能達到,五階Runge-Kutta方法的局部截斷誤差 只能達到,四階Runge-Kutta方法的局部截斷誤差 只能達到,三階Runge-Kutta方法的局部截斷誤差 只能達到,注 龍格-庫塔法的主要運算在于計算 的值,即計算 的值。Butcher 于1965年給出了計算量與可達到的最高精度階數的關系, 由于龍格-庫塔法的導出基于泰勒展開,故精,太好的解,最好采用低階算法而將步長h 取小。,度主要受解函數的光滑性影響。對于光滑性不,4 單步方法的收斂性與穩定性 /* Convergency and Stability */, 收斂性 /* Convergency */,例就初值問題 考察歐拉顯式格式的收斂性。,解該問題的精確解為,歐拉公式為,對任意固定的 x xi i h ,有 穩定性 /* Stability */,例考察初值問題 在區間0, 0.5上的解.分別用歐拉顯、隱式格式和改進的歐拉格式計算數值解。,1.0000 2.0000 4.0000 8.0000 1.6000101 3.2000101,1.0000 2.5000101 6.2500102 1.5625102 3.9063103 9.7656104,1.0000 2.5000 6.2500 1.5626101 3.9063101 9.7656101,1.0000 4.9787102 2.4788103 1.2341104 6.1442106 3.0590107,What is wrong ,一般分析時為簡單起見,只考慮試驗方程 /* test equation */常數,可以是復數,我們稱算法A 比算法B 穩定,就是指 A 的絕對穩定 區域比 B 的大。,當步長取為 h 時,將某算法應用于上式,并假設只在,初值產生誤差 ,則若此誤差以后逐步衰減,就稱該算法相對于 絕對穩定, 的全體構成,絕對穩定區域。,例考察顯式歐拉法,由此可見,要保證初始誤差0 以后逐步衰減, 必須滿足,例考察隱式歐拉法可見絕對穩定區域為注一般來說,隱式歐拉法的絕對穩定性比同階的顯式法的好。,例隱式龍格-庫塔法,其中2階方法 的絕對穩定 區域為,無條件穩定,而顯式 1 4 階方法的絕對穩定區域為,
總結
以上是生活随笔為你收集整理的欧拉折线法解常微分方程C语言,05常微分方程数值解.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言最小元素下标怎么看,查找最小的k个
- 下一篇: c语言探测次数不超过4的哈希算法,Hih