有限差分法
由泰勒展開式的推導(dǎo)
首先假設(shè)要近似函數(shù)的各級導(dǎo)數(shù)都有良好的性質(zhì),依照泰勒定理,可以形成以下的泰勒展開式:
其中 n !表示是 n 的階乘, R n ( x )為余數(shù),表示泰勒多項式和原函數(shù)之間的差??梢酝茖?dǎo)函數(shù) f 一階導(dǎo)數(shù)的近似值:
設(shè)定x 0 =a,可得:
除以 h 可得:
求解f"(a):
假設(shè) R 1 ( x ) {\displaystyle R_{1}(x)} 相當(dāng)小,因此可以將"f"的一階導(dǎo)數(shù)近似為:
準(zhǔn)確度及誤差
近似解的誤差定義為近似解及解析解之間的差值。有限差分法的兩個誤差來源分別是舍入誤差及 截尾誤差 ( 英語 : truncation error ) (或稱為離散化誤差),前者是因為電腦計算小數(shù)時四舍五入造成的誤差,后者則是計算機內(nèi)數(shù)字位數(shù)限制造成的誤差。
有限差分法是以在格點上函數(shù)的值為準(zhǔn)
在運用有限差分法求解一問題(或是說找到問題的近似解)時,第一步需要將問題的定義域離散化。一般會將問題的定義域用均勻的網(wǎng)格分割(可參考右圖)。因此有限差分法會制造一組導(dǎo)數(shù)的離散數(shù)值近似值。
一般會關(guān)注近似解的 局部截尾誤差 ( 英語 : local truncation error ) ,會用大O符號表示,局部截尾誤差是指應(yīng)用有限差分法一次后產(chǎn)生的誤差,因此為 f ′ ( x i ) ? ? --> f i ′ {\displaystyle f"(x_{i})-f"_{i}} ,此時 f ′ ( x i ) {\displaystyle f"(x_{i})} 是實際值,而 f i ′ {\displaystyle f"_{i}} 為近似值。泰勒多項式的余數(shù)項有助于分析局部截尾誤差。利用 f ( x 0 + h ) {\displaystyle f(x_{0}+h)} 泰勒多項式的余數(shù)項,也就是
可以找到局部截尾誤差的主控項,例如用前項差分法計算一階導(dǎo)數(shù),已知 f ( x i ) = f ( x 0 + i h ) {\displaystyle f(x_{i})=f(x_{0}+ih)} ,
利用一些代數(shù)的處理,可得
注意到左邊的量是有限差分法的近似,右邊的量是待求解的量再加上一個余數(shù),因此余數(shù)就是局部截尾誤差。上述范例可以用下式表示:
在此例中,局部截尾誤差和時間格點的大小成正比。
范例:常微分方程
例如考慮以下的常微分方程
利用數(shù)值方法中歐拉法求解,利用以下的有限差分式
來近似導(dǎo)數(shù),并配合一些代數(shù)處理(等號兩側(cè)同乘以h,再加上u(x)),可得
最后的方程式即為有限差分方程,求解此方程則可得到原方程的近似解。
范例:熱傳導(dǎo)方程
考慮正規(guī)化的一維熱傳導(dǎo)方程式,為齊次的狄利克雷邊界條件
對此問題求數(shù)值解的一種方式是用差分去近似所有的導(dǎo)數(shù),可以將空間分割為 x 0 , . . . , x J {\displaystyle x_{0},...,x_{J}} ,將時間也分割為 t 0 , . . . . , t N {\displaystyle t_{0},....,t_{N}} 。假設(shè)在時間及空間都是均勻的網(wǎng)格切割,空間中兩個連續(xù)位置的間隔為 h ,兩個連續(xù)時間之間的間隔為 k 。點
表示 u ( x j , t n ) {\displaystyle u(x_{j},t_{n})} 的數(shù)值近似解。
顯式方法
熱傳導(dǎo)方程最常用顯式方法的 模版 ( 英語 : Stencil (numerical analysis) )
利用在時間 t n {\displaystyle t_{n}} 的前向差分,以及在位置 x j {\displaystyle x_{j}} 的二階中央差分( FTCS 格式 ( 英語 : FTCS scheme ) ),可以得到以下的迭代方程:
這是用求解一維導(dǎo)熱傳導(dǎo)方程的 顯式方法 ( 英語 : Explicit and implicit methods ) 。
可以用以下的式子求解 u j n + 1 {\displaystyle u_{j}^{n+1}}
其中 r = k / h 2 . {\displaystyle r=k/h^{2}.}
因此配合此迭代關(guān)系式,已知在時間 n 的數(shù)值,可以求得在時間 n +1的數(shù)值。 u 0 n {\displaystyle u_{0}^{n}} 及 u J n {\displaystyle u_{J}^{n}} 的數(shù)值可以用邊界條件代入,在此例中為0。
此顯式方法在 r ≤ ≤ --> 1 / 2 {\displaystyle r\leq 1/2} 時,為數(shù)值穩(wěn)定且收斂 。其數(shù)值誤差和時間間隔成正比,和位置間隔的平方成正比:
隱式方法
隱式方法的模版
若使用時間 t n + 1 {\displaystyle t_{n+1}} 的后向差分,及位置 x j {\displaystyle x_{j}} 的二階中央差分(BTCS 格式),可以得到以下的迭代方程:
這是用求解一維導(dǎo)熱傳導(dǎo)方程的 隱式方法 ( 英語 : Explicit and implicit methods ) 。
在求解線性聯(lián)立方程后可以得到 u j n + 1 {\displaystyle u_{j}^{n+1}} :
此方法不論 r {\displaystyle r} 的大小,都數(shù)值穩(wěn)定且收斂,但在計算量會較顯式方法要大,因為每前進(jìn)一個時間間隔,就需要求解一個聯(lián)立的數(shù)值方程組。其數(shù)值誤差和時間間隔成正比,和位置間隔的平方成正比:
克蘭克-尼科爾森方法
若使用時間 t n + 1 / 2 {\displaystyle t_{n+1/2}} 的中間差分,及位置 x j {\displaystyle x_{j}} 的二階中央差分(CTCS 格式),可以得到以下的迭代方程:
此公式為克蘭克-尼科爾森方法(Crank-Nicolson方法)。
克蘭克-尼科爾森方法的模版
在求解線性聯(lián)立方程后可以得到 u j n + 1 {\displaystyle u_{j}^{n+1}} :
此方法不論 r {\displaystyle r} 的大小,都數(shù)值穩(wěn)定且收斂,但在計算量會較顯式方法要大,因為每前進(jìn)一個時間間隔,就需要求解一個聯(lián)立的數(shù)值方程組。其數(shù)值誤差和時間間隔的平方成正比,和位置間隔的平方成正比:
若時間刻度較小時,克蘭克-尼科爾森方法是最精確的,而顯式方法是最不精確的,而且可能會不穩(wěn)定,但是是最容易計算的,其數(shù)值計算量也最少。若時間刻度較大時,隱式方法的效果最好。
相關(guān)條目
有限元分析
差分
時域有限差分
模版 (數(shù)值分析) ( 英語 : Stencil (numerical analysis) )
有限差分系數(shù) ( 英語 : Finite difference coefficient )
五點Stencil ( 英語 : Five-point stencil )
Lax等價定理 ( 英語 : Lax equivalence theorem )
期權(quán)定價的有限差分法 ( 英語 : finite difference methods for option pricing )
參考資料
K.W. Morton and D.F. Mayers, Numerical Solution of Partial Differential Equations, An Introduction . Cambridge University Press, 2005.
Oliver Rübenk?nig, The Finite Difference Method (FDM) - An introduction , (2006) Albert Ludwigs University of Freiburg
Autar Kaw and E. Eric Kalu, Numerical Methods with Applications , (2008)[1]
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
- 有價值
- 一般般
- 沒價值
{{item.userName}} 舉報
{{item.time}} {{item.replyListShow ? '收起' : '展開'}}評論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報
{{_reply.time}}