跳转到内容

英文维基 | 中文维基 | 日文维基 | 草榴社区

有限差分法

本页使用了标题或全文手工转换
维基百科,自由的百科全书

数学中,有限差分法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.

外部連結

[编辑]