數學中,有限差分法finite-difference methods,簡稱FDM),是一種微分方程數值方法,是通過有限差分近似導數,從而尋求微分方程的近似解。

由泰勒展開式的推導

編輯

首先假設要近似函數的各級導數都有良好的性質,依照泰勒定理,可以形成以下的泰勒展開式

 

其中n!表示是n階乘Rn(x)為餘數,表示泰勒多項式和原函數之間的差。可以推導函數f一階導數的近似值:

 

設定x0=a,可得:

 

除以h可得:

 

求解f'(a):

 

假設 相當小,因此可以將"f"的一階導數近似為:

 

準確度及誤差

編輯

近似解的誤差定義為近似解及解析解之間的差值。有限差分法的兩個誤差來源分別是捨入誤差截尾誤差英語truncation error(或稱為離散化誤差),前者是因為電腦計算小數時四捨五入造成的誤差,後者則是用有限階級數表示導數引起的誤差。

 
有限差分法是以在格點上函數的值為準

在運用有限差分法求解一問題(或是說找到問題的近似解)時,第一步需要將問題的定義域離散化。一般會將問題的定義域用均勻的網格分割(可參考右圖)。因此有限差分法會製造一組導數的離散數值近似值。

一般會關注近似解的局部截尾誤差英語local truncation error,會用大O符號表示,局部截尾誤差是指應用有限差分法一次後產生的誤差,因此為 ,此時 是實際值,而 為近似值。泰勒多項式的餘數項有助於分析局部截尾誤差。利用 泰勒多項式的餘數項,也就是

 , 其中 ,

可以找到局部截尾誤差的主控項,例如用前項差分法計算一階導數,已知 ,

 

利用一些代數的處理,可得

 

注意到左邊的量是有限差分法的近似,右邊的量是待求解的量再加上一個餘數,因此餘數就是局部截尾誤差。上述範例可以用下式表示:

 

在此例中,局部截尾誤差和時間格點的大小成正比。

範例:常微分方程

編輯

例如考慮以下的常微分方程

 

利用數值方法中歐拉法求解,利用以下的有限差分式

 

來近似導數,並配合一些代數處理(等號兩側同乘以h,再加上u(x)),可得

 

最後的方程式即為有限差分方程,求解此方程則可得到原方程的近似解。

範例:熱傳導方程

編輯

考慮正規化的一維熱傳導方程式,為齊次的狄利克雷邊界條件

 
 (邊界條件)
 (初始條件)

對此問題求數值解的一種方式是用差分去近似所有的導數,可以將空間分割為 ,將時間也分割為 。假設在時間及空間都是均勻的網格切割,空間中兩個連續位置的間隔為h,兩個連續時間之間的間隔為k。點

 

表示 的數值近似解。

顯式方法

編輯
 
熱傳導方程最常用顯式方法的模版英語Stencil (numerical analysis)

利用在時間 的前向差分,以及在位置 的二階中央差分(FTCS 格式英語FTCS scheme),可以得到以下的迭代方程:

 

這是用求解一維導熱傳導方程的顯式方法

可以用以下的式子求解 

 

其中 

因此配合此迭代關係式,已知在時間n的數值,可以求得在時間n+1的數值。  的數值可以用邊界條件代入,在此例中為0。

此顯式方法在 時,為數值穩定收斂[1]。其數值誤差和時間間隔成正比,和位置間隔的平方成正比:

 

隱式方法

編輯
 
隱式方法的模版

若使用時間 的後向差分,及位置 的二階中央差分(BTCS 格式),可以得到以下的迭代方程:

 

這是用求解一維導熱傳導方程的隱式方法

在求解線性聯立方程後可以得到 

 

此方法不論 的大小,都數值穩定且收斂,但在計算量會較顯式方法要大,因為每前進一個時間間隔,就需要求解一個聯立的數值方程組。其數值誤差和時間間隔成正比,和位置間隔的平方成正比:

 

克蘭克-尼科爾森方法

編輯

若使用時間 的中間差分,及位置 的二階中央差分(CTCS 格式),可以得到以下的迭代方程:

 

此公式為克蘭克-尼科爾森方法(Crank–Nicolson method)。

 
克蘭克-尼科爾森方法的模版

在求解線性聯立方程後可以得到 

 

此方法不論 的大小,都數值穩定且收斂,但在計算量會較顯式方法要大,因為每前進一個時間間隔,就需要求解一個聯立的數值方程組。其數值誤差和時間間隔的平方成正比,和位置間隔的平方成正比:

 

若時間刻度較小時,克蘭克-尼科爾森方法是最精確的,而顯式方法是最不精確的,而且可能會不穩定,但是是最容易計算的,其數值計算量也最少。若時間刻度較大時,隱式方法的效果最好。

相關條目

編輯

參考資料

編輯
  1. ^ Crank, J. The Mathematics of Diffusion. 2nd Edition, Oxford, 1975, p. 143.

外部連結

編輯