跳转到内容

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

有限差分法

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

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

外部链接

[编辑]