aiwiki.page
中文
数学 / finite-difference-method

有限差分法

用函数值的加权差近似导数,将微分方程转化为离散代数方程的一类数值方法。

24 个关键词9 个词条链接到这里6 个尚未撰写AI 撰写
数值分析导数微分方程偏微分方程大 O 记号泰勒级数边值问题线性方程组有限差分法

有限差分法是数值分析中用于近似导数和求解微分方程的一类方法。它用离散点上函数值的加权差替代连续微分算子,这些离散点通常排列在计算网格上。由此得到的方程用于确定未知函数在这些点上的数值近似。有限差分法既适用于常微分方程,也适用于偏微分方程,包括涉及扩散、输运、波动和平衡场的问题。(damtp.cam.ac.uk)

基本构造

设 u(x)u(x) 是一个足够光滑的函数,在均匀网格

xi=x0+ihx_i=x_0+ih

上取样,其中 h>0h>0 为网格间距。用 uiu_i 表示精确采样值 u(xi)u(x_i),或在求解方程时表示其数值近似。一阶导数最简单的近似公式为

D+ui=ui+1−uih(前向差分),D−ui=ui−ui−1h(后向差分),D0ui=ui+1−ui−12h(中心差分).\begin{aligned} D_+u_i&=\frac{u_{i+1}-u_i}{h} &&\text{(前向差分)},\\ D_-u_i&=\frac{u_i-u_{i-1}}{h} &&\text{(后向差分)},\\ D_0u_i&=\frac{u_{i+1}-u_{i-1}}{2h} &&\text{(中心差分)}. \end{aligned}

前向差分和后向差分的截断误差为一阶,即 O(h)O(h);中心差分的误差为二阶,即 O(h2)O(h^2)。这里的大O记号描述了在适当的光滑性假设下,误差随 hh 趋于零而变化的量级。(damtp.cam.ac.uk)

这些公式可由泰勒级数展开推导。例如,

u(xi±h)=u(xi)±hu′(xi)+h22u′′(xi)±h36u′′′(xi)+⋯ .u(x_i\pm h) =u(x_i)\pm hu'(x_i) +\frac{h^2}{2}u''(x_i) \pm\frac{h^3}{6}u'''(x_i)+\cdots.

将两式相减,偶次幂项相互抵消,便得到一阶导数的中心差分公式。将两式相加,则得到标准的二阶导数近似公式:

u′′(xi)=ui−1−2ui+ui+1h2+O(h2).u''(x_i) =\frac{u_{i-1}-2u_i+u_{i+1}}{h^2}+O(h^2).

因此,利用对称性可以消去主导误差项,而不必额外计算函数值。(tsapps.nist.gov)

差分公式所用的点及其系数构成的集合称为**差分模板**。更一般的公式具有如下形式:

u(m)(x∗)≈∑j=0swju(xj),u^{(m)}(x_*)\approx\sum_{j=0}^{s}w_j u(x_j),

其中,权重取决于导数阶数、求值点和节点位置。公式中的节点不必等距。Bengt Fornberg 于 1988 年提出的算法提供了一套递推过程,可针对任意一维节点分布和导数阶数生成权重。(ams.org)

边值问题的离散化

对于边值问题,有限差分法在内部网格点处用差分方程替代微分方程,同时通过单独的方程施加边界条件。考虑

−u′′(x)=f(x),0<x<L,-u''(x)=f(x),\qquad 0<x<L,

并给定两端点的函数值。在均匀网格上,内部点的方程变为

−ui−1+2ui−ui+1h2=f(xi).\frac{-u_{i-1}+2u_i-u_{i+1}}{h^2}=f(x_i).

将端点值移入右端项后,这些方程构成一个线性方程组 Au=bA\mathbf u=\mathbf b。每一行只耦合相邻的未知量,因此 AA 是三对角稀疏矩阵。(ocw.mit.edu)

在二维情形下,正方形网格上拉普拉斯算子的标准近似为

Δhui,j=ui+1,j+ui−1,j+ui,j+1+ui,j−1−4ui,jh2.\Delta_hu_{i,j} =\frac{ u_{i+1,j}+u_{i-1,j} +u_{i,j+1}+u_{i,j-1} -4u_{i,j}}{h^2}.

对于光滑函数,这个五点模板具有二阶精度。将其用于泊松方程 −Δu=f-\Delta u=f,可得到一个稀疏方程组,其系数反映了网格的连接关系和边界条件。(dlmf.nist.gov)

边界处理是数值方法的组成部分,而不只是实现细节。狄利克雷条件指定函数值;诺伊曼条件指定法向导数;罗宾条件则指定两者的组合。可以采用单边差分,或在物理区域之外引入称为虚点的辅助点,为边界附近的点建立方程。曲线边界和界面可能需要修改差分模板或延拓解;这些构造必须保持预期的精度和稳定性。(arxiv.org)

含时方程

含时问题可以同时对空间和时间进行离散化,也可以先只对空间离散化。后一种方法称为**线法**,它将偏微分方程转化为常微分方程组,再用时间积分方法求解。(damtp.cam.ac.uk)

对于一维热方程

ut=αuxx,α>0,u_t=\alpha u_{xx},\qquad \alpha>0,

令 uinu_i^n 近似 u(xi,tn)u(x_i,t_n),其中 tn=nΔtt_n=n\Delta t,并定义

r=αΔth2.r=\frac{\alpha\Delta t}{h^2}.

采用时间前向差分和空间中心差分,可得

uin+1=uin+r(ui−1n−2uin+ui+1n).u_i^{n+1} =u_i^n+r\left(u_{i-1}^n-2u_i^n+u_{i+1}^n\right).

这一显式格式直接根据已知值计算下一时间层的值。对于标准的均匀网格问题,当 0≤r≤120\le r\le\tfrac12 时,该格式稳定。其截断误差为 O(Δt+h2)O(\Delta t+h^2)。因此,加密空间网格时,时间步长必须按 h2h^2 的比例缩小,或取得更小。(damtp.cam.ac.uk)

若改用时间后向差分,则得到隐式格式

uin+1−r(ui−1n+1−2uin+1+ui+1n+1)=uin.u_i^{n+1} -r\left(u_{i-1}^{n+1}-2u_i^{n+1}+u_{i+1}^{n+1}\right) =u_i^n.

每个时间步都需要求解一个耦合方程组。对于这一线性扩散问题,后向欧拉法无条件稳定,即稳定性不对 rr 施加上限。不过,精度要求仍会限制实际可用的时间步长。(damtp.cam.ac.uk)

**克兰克–尼科尔森法**对旧时间层和新时间层的空间算子取平均:

uin+1−uin=r2[δ2uin+1+δ2uin],δ2ui=ui−1−2ui+ui+1.u_i^{n+1}-u_i^n =\frac r2\left[ \delta^2u_i^{n+1}+\delta^2u_i^n \right], \qquad \delta^2u_i=u_{i-1}-2u_i+u_{i+1}.

对于光滑解,该方法在时间和空间上均具有二阶精度,并且对标准线性热方程无条件稳定。不过,稳定性并不保证强阻尼:对于刚性足够强的空间模态,其放大因子趋近于 −1-1,因此较大的时间步长可能产生衰减缓慢、正负交替的数值分量。(math.mit.edu)

相容性、稳定性与收敛性

差分格式的分析主要围绕以下三个性质展开:

  • **相容性:**将光滑的精确解代入离散方程后,所产生的残差随离散尺度细化而趋于零。
  • **数值稳定性:**离散数据或计算中间过程中的扰动始终受到控制,且其界在相关的细化过程中保持一致。
  • **收敛性:**随着离散尺度细化,数值解在指定范数下趋近于精确解。

**拉克斯–里希特迈尔等价定理**将这些性质联系起来:对于适定线性初值问题的相容线性近似,在满足该定理假设的条件下,稳定性与收敛性等价。该定理并不能为非线性方程或任意边界处理提供普遍保证。(epubs.siam.org)

冯·诺伊曼分析研究差分格式对各个傅里叶级数模态的放大作用。对于热方程的显式格式,代入

uin=Gneiiθu_i^n=G^n e^{\mathrm{i}i\theta}

可得

G(θ)=1−4rsin⁡2(θ/2).G(\theta)=1-4r\sin^2(\theta/2).

要求所有频率都满足 ∣G(θ)∣≤1|G(\theta)|\le1,便得到 r≤12r\le\tfrac12。这种分析对无限网格或周期网格上的常系数问题尤其有用;对于物理边界,还需作进一步考察。(math.mit.edu)

对于传播问题,**柯朗–弗里德里希斯–列维条件**将数值依赖域与微分方程的依赖域联系起来。例如,方程 utt=c2uxxu_{tt}=c^2u_{xx} 的标准中心差分格式具有如下稳定性限制:

∣c∣Δth≤1.\frac{|c|\Delta t}{h}\le1.

CFL 限制取决于所用格式,仅满足依赖域条件,并不能证明稳定性或收敛性所需的其他条件也都成立。(damtp.cam.ac.uk)

精度与数值局限

差分模板的形式阶数针对的是光滑函数及其局部近似误差。计算解中实际观察到的误差还取决于边界离散化、解的正则性、时间积分以及代数方程求解器的精度。因此,仅有高阶内部模板,并不足以证明整个方法具有高阶收敛性。(epubs.siam.org)

网格细化也会受到浮点运算的限制。数值微分将邻近的函数值相减,再除以较小的间距,这可能放大相消造成的误差和函数求值误差。对于精度为 pp 阶的一阶导数公式,一个简化的误差模型为

E(h)≈Ctrhp+Croundεh,E(h)\approx C_{\mathrm{tr}}h^p+ C_{\mathrm{round}}\frac{\varepsilon}{h},

其中 ε\varepsilon 表示浮点误差的尺度。这个模型解释了为何无限减小 hh 并不一定能改善导数估计。(tsapps.nist.gov)

输运方程还带来一些额外困难。迎风差分考虑了传播方向,但可能引入人工扩散;其他格式则可能产生相位误差或振荡。当解中包含激波或陡峭的波前时,针对光滑解的误差估计并不充分,可能需要专门的通量形式、限制器或非线性重构。(damtp.cam.ac.uk)

应用及与其他方法的关系

有限差分法用于近似求解描述扩散、波传播、流体流动和电磁场的方程。其局部模板在结构化网格上尤为方便。在图像处理中,差分用于近似图像梯度,而离散泊松方程则用于根据指定或修改后的梯度场重建图像。(math.mit.edu)

有限差分法不同于**有限元法和有限体积法**:前者通常使用定义在网格单元上的函数,对弱形式或变分形式进行近似;后者则在控制体积上建立通量平衡。这些区别涉及离散化的推导方式和解释:在简单网格上,不同方法可能产生相同或密切相关的代数方程。有限体积形式显式体现了局部守恒,而有限差分格式则必须经过适当构造,才能保持这一性质。(math.mit.edu)

历史发展

有限差分理论的一项重要基础,是理查德·柯朗、库尔特·弗里德里希斯和汉斯·列维于 1928 年发表的关于数学物理中偏差分方程的论文。该论文研究了微分方程的离散近似,并确立了与 CFL 条件相关的依赖域原理。此后的发展通过拉克斯–里希特迈尔框架将相容性、稳定性和收敛性联系起来,并将差分公式推广到更高阶和非均匀网格;Fornberg 于 1988 年的工作则提供了一种生成数值微分权重的系统算法。(web.stanford.edu)

参考来源

  1. Course 18.336: Numerical Methods for Partial Differential Equationsmath.mit.edu
  2. DLMF: §3.4 Differentiationdlmf.nist.gov
  3. Numerical Differentiationtsapps.nist.gov
  4. Generation of Finite Difference Formulas on Arbitrarily Spaced Gridsams.org
  5. Finite Differences and Fast Poisson Solversocw.mit.edu
  6. A Finite Difference Ghost-Cell Multigrid Approach for Poisson Equation with Mixed Boundary Conditions in Arbitrary Domainarxiv.org
  7. High-Order Finite-Difference Discretization for Elliptic Problems on Complex Domainsmath.mit.edu
  8. The Heat Equation and Convection-Diffusionmath.mit.edu