常微分程求解:基本問題剖析,奧依勒法、泰勒展開
文章推薦指數: 80 %
在微分方程式的問題中,f(x,y) 為所給定的已知,而y(x) 則是未知且希望求得的解。
我們要如何求解y(x) ? Euler (奧依勒)演算法. 在Δx → 0 的情形下 ...
常微分程求解:基本問題剖析,奧依勒法、泰勒展開與高階方法
微分方程式
微分方程式是方程式,所以有等號,並且待求解的未知函數有以導數(對函數的自變數微分)出現在式子中者,即為微分方程式。
(如果完全沒有微分符號出現在式子中的就不算)
在微分方程式中,又分:
常微分方程式 (OrdinaryDifferentialEquation)
只有一個變數
偏微分方程式 (PartialDifferentialEquation)
有多於一個自變數
處理高階微分方程的(數值)方法
一個常微分方程式的一般形如下:
透過令一階導數y'(x)=z(x),就可以把原本一個二階的ODE化成兩個聯立的一階之ODE,如下:
一個二階ODE原本就需要兩個條件來決定兩個待定的積分常數,而兩個一階的ODE則變各需一個,也是兩個,因此剛好,完全沒有改變原本該有之解的本質。
同理推之,任何n階ODE皆可等效地轉換為n個一階的ODE。
因此,我們所需要關心的是,像具有以下這種通式形式的一階ODE該如何求其數值解yi(x),注意y1、y2、...、yN分別代表原待求函數y(x)、y'(x)、...、y(N-1)(x)等,一共有N個,要同時滿足下列N條方程式:
注意等號右手邊的fi可以是各階導數yi的顯函數。
Euler演算法
一階微分方程式的程式
最一般形式的一階微分方程式,是如下的形式:
dy/dx=f(x,y)
其中f(x,y)可次是任何以x,y為自變數的顯函數。
在微分方程式的問題中,f(x,y)為所給定的已知,而y(x)則是未知且希望求得的解。
我們要如何求解y(x)?
Euler(奧依勒)演算法
在Δx→0的情形下Δy/Δx=dy/dx=f(x,y),也就是說Δy=f(x,y)Δx。
把x分成許多等間隔的小單位,即Δy≡yn+1-yn、Δx≡xn+1-xn,則上式成為
yn+1-yn=f(xn,yn)Δx,也就是說
yn+1=yn+f(xn,yn)Δx
上式就是Euler演算法,它告訴我們只要知道第n格的y(x)值yn,就可以算得下一格的y(x)值yn+1,故只要知道y(x)在某個x0處的起始值y(x0)
(在不參考任何資料的情況下,要能推導出Euler演算法的公式)
高階(誤差項)的方法
從泰勒展開式的角度來看,
y(x+Δx)=y(x)+y'(x)Δx+O(Δx2)
也就是說,
y(x+Δx)=y(x)+f(x,y)Δx+O(Δx2)
這是所謂的一階方法,它最高次的精確項是Δx的一次方項,後面的O(Δx2)代表所有的誤差都在Δx的二次方(含)以上。
像Euler演算法這樣的一階方法是有缺點的,簡單地說,它的準確度不夠。
或許你會想,Δx取小一點就會比較精確,比方說,取為原來的十分之一大小,然而,這也意味著同一個問題的的切割區間數多了十倍,運算次數就要多十倍,如比進位誤差就會很大。
(所謂的進位誤差成截斷誤差,是指由於電腦中只能保留有限個位數,因此數據的最後一位在每一次進行運算時便不免有誤差,且運算次數多時,誤差還會被進到前面的位數。
)
你或許又想,即然如此,那就做更高次的好了,也就是把Δx2甚至更高次項的公式也寫下來,不就很精準了嗎?但是不行,在使用電腦做數值計算時,我們是絕對不能把兩個很小的數值乘在一起的,因為電腦內沒有足夠的位數來表示它們乘積的結果,這樣做所導致的誤差是災難性的。
半步方法
利用泰勒展開式,但只在半步展開的策略,可以幫助我們建立更精準的高階方法,而卻一樣只需要用到Δx的一次方。
以下是Gould與Tobochnick的AnIntroductiontoComputerSimulationMethods教科書附錄中所介紹之兩種的方法的比較,其中Euleralgorithm是一階方法,而Euler-Richardsonalgorithm則是二階方法,也就是說,表示法仍只是Δx的一次方,而誤差的部分確是三階(含)或以上的O(Δx3),這是怎麼辦到的,讓我們看以下的推導:
我們在這裏學到的經驗是,透過求值在半步的斜率,回到出發點用以推進積分的下一整步步(解微分的問題事實上這相當於是積分),如此"以退為進"的方法,可以大幅提高精確度。
其實,除了這個可達二階精確度的方法外,更高階精確度的方法也是存在,並且是利用類似的策略所推導出來的。
本單元沒有副程式
延伸文章資訊
- 1提要25:二階常係數齊性ODE 的解法(三)--複數根
說明,主要是相異複數根時之通解可以利用「尤拉公式(Euler Formula)」加以化簡,其. 詳細情況說明如後。 二階常係數齊性常微分方程式之標準型式如以下所示:.
- 2▫第一章: 一階常微分方程式part 1
定義:常微分方程式(Ordinary Differential Equation)為一微 ... 才對不同類型之微分方程介紹其對應之. 解法。 ▫ 解的表示法:. ▫ 顯式解.
- 3CH1_一階常微分方程(First-Order Differential Equations).pdf
解之分類:. (1)通解(General solution):通解即為常微分方程式之. 原始函數. (2)特解(Particular solution):給定通解中之任意常數. 之值所得之解.
- 4常微分程求解:基本問題剖析,奧依勒法、泰勒展開
在微分方程式的問題中,f(x,y) 為所給定的已知,而y(x) 則是未知且希望求得的解。 我們要如何求解y(x) ? Euler (奧依勒)演算法. 在Δx → 0 的情形下 ...
- 5常微分方程式- 維基百科,自由的百科全書
在數學分析中,常微分方程式(英語:ordinary differential equation,簡稱ODE)是未知函數只含有一個自變數的微分方程式。對於微積分的基本概念,請參見微積分、微分 ...