Remove ads
来自维基百科,自由的百科全书
在数学中,有限差分法(finite-difference methods,簡稱FDM),是一种微分方程数值方法,是通过有限差分來近似导數,从而寻求微分方程的近似解。
首先假設要近似函數的各級導數都有良好的性質,依照泰勒定理,可以形成以下的泰勒展開式:
其中n!表示是n的階乘,Rn(x)為餘數,表示泰勒多項式和原函數之間的差。可以推導函數f一階導數的近似值:
設定x0=a,可得:
除以h可得:
求解f'(a):
假設相當小,因此可以將"f"的一階導數近似為:
近似解的誤差定義為近似解及解析解之間的差值。有限差分法的兩個誤差來源分別是捨入誤差及截尾誤差(或稱為離散化誤差),前者是因為電腦計算小數時四捨五入造成的誤差,後者則是用有限阶级数表示导数引起的误差。
在運用有限差分法求解一問題(或是說找到問題的近似解)時,第一步需要將問題的定義域離散化。一般會將問題的定義域用均勻的網格分割(可參考右圖)。因此有限差分法會制造一組導數的離散數值近似值。
一般會關注近似解的局部截尾誤差,會用大O符號表示,局部截尾誤差是指應用有限差分法一次後產生的誤差,因此為,此時是實際值,而為近似值。泰勒多項式的餘數項有助於分析局部截尾誤差。利用泰勒多項式的餘數項,也就是
可以找到局部截尾誤差的主控項,例如用前項差分法計算一階導數,已知,
利用一些代數的處理,可得
注意到左邊的量是有限差分法的近似,右邊的量是待求解的量再加上一個餘數,因此餘數就是局部截尾誤差。上述範例可以用下式表示:
在此例中,局部截尾誤差和時間格點的大小成正比。
例如考慮以下的常微分方程
利用數值方法中歐拉法求解,利用以下的有限差分式
來近似導數,並配合一些代數處理(等號兩側同乘以h,再加上u(x)),可得
最後的方程式即為有限差分方程,求解此方程則可得到原方程的近似解。
對此問題求數值解的一種方式是用差分去近似所有的導數,可以將空間分割為,將時間也分割為。假設在時間及空間都是均勻的網格切割,空間中兩個連續位置的間隔為h,兩個連續時間之間的間隔為k。點
表示的數值近似解。
利用在時間的前向差分,以及在位置的二階中央差分(FTCS 格式),可以得到以下的迭代方程:
這是用求解一維導熱傳導方程的顯式方法。
可以用以下的式子求解
其中
因此配合此迭代關係式,已知在時間n的數值,可以求得在時間n+1的數值。及的數值可以用邊界條件代入,在此例中為0。
此顯式方法在時,為數值稳定且收斂[1]。其數值誤差和時間間隔成正比,和位置間隔的平方成正比:
若使用時間的後向差分,及位置的二階中央差分(BTCS 格式),可以得到以下的迭代方程:
這是用求解一維導熱傳導方程的隱式方法。
在求解線性聯立方程後可以得到:
此方法不論的大小,都數值稳定且收斂,但在計算量會較顯式方法要大,因為每前進一個時間間隔,就需要求解一個聯立的數值方程組。其數值誤差和時間間隔成正比,和位置間隔的平方成正比:
若使用時間的中間差分,及位置的二階中央差分(CTCS 格式),可以得到以下的迭代方程:
此公式為克兰克-尼科尔森方法(Crank–Nicolson method)。
在求解線性聯立方程後可以得到:
此方法不論的大小,都數值稳定且收斂,但在計算量會較顯式方法要大,因為每前進一個時間間隔,就需要求解一個聯立的數值方程組。其數值誤差和時間間隔的平方成正比,和位置間隔的平方成正比:
若時間刻度較小時,克兰克-尼科尔森方法是最精確的,而顯式方法是最不精確的,而且可能會不穩定,但是是最容易計算的,其數值計算量也最少。若時間刻度較大時,隱式方法的效果最好。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.