冯诺依曼稳定性分析

来自testwiki
跳转到导航 跳转到搜索

数值分析中, 冯诺依曼稳定性分析 (亦作傅立叶稳定性分析) 用于验证计算线性偏微分方程时使用特定有限差分法数值稳定性[1],该分析方法基于对数值误差的傅立叶分解。1947年英国研究人员約翰·克蘭克菲利斯·尼科爾森在文章中对该方法进行了简要介绍[2], 尔后又出现在冯诺依曼合作的文章中 [3]洛斯阿拉莫斯国家实验室对该方法进行了进一步发展。

数值稳定性

数值稳定性与数值误差密切相关。使用有限差分方法进行计算时,若任意时间步的误差不会导致其后计算结果的发散,则可称该有限差分法是数值稳定的。如果误差随着进一步计算降低最终消失,该算法被认为稳定;若误差在进计算中保持为常量,则认为该算法“中性稳定”。但如果误差随着进一步计算增长,结果发散,则数值方法不稳定。数值方法的稳定性可以通过冯诺依曼稳定性分析得到验证。稳定性一般不易分析,特别是针对非线性偏微分方程。

冯诺依曼稳定性方法只适用于满足 Lax–Richtmyer 条件 (Lax 等价定理) 的某些特殊差分法: 偏微分方程系统须线性,常系数,满足周期性边界条件,只有两个独立变量,差分法中最多含两层时间步[4]。 由于相对简单,人们常使用冯诺依曼稳定性分析代替其他更为详细的稳定性分析,用以估计差分方法中对容许步长的限制。

方法描述

冯诺依曼误差分析将误差分解为傅立叶级数。为了描述此过程,考虑一维热传导方程

ut=α2ux2

空间网格间隔为 L, 对网格作 FTCS (Forward-Time Central-Space,时间步前向欧拉法,空间步三点中心差分) 离散处理,

(1)ujn+1=ujn+r(uj+1n2ujn+uj1n)

其中 r=αΔtΔx2ujn 为离散网格上的数值解,用于近似此偏微分方程的精确解 u(x,t)

定义舍入误差 ϵjn=Njnujn 。 其中 ujn 是离散方程 (1) 式的精确解,Njn 为包含有限浮点精度的数值解。 因为精确解 ujn 满足离散方程, 误差 ϵjn 亦满足离散方程 [5]

(2)ϵjn+1=ϵjn+r(ϵj+1n2ϵjn+ϵj1n)

此式将确定误差的递推关系。方程 (1) 和 (2) 中,误差和数值解随时间具有一致的变化趋势。对于含周期性边界条件的线性微分方程,间隔 L 上的空间部分误差可展开为傅立叶级数

(3)ϵ(x)=m=1MAmeikmx

其中波数 km=πmLm=1,2,,MM=L/Δx。 通过假设误差幅度 Am 是时间的函数,可以给出误差和时间的关系。 不难知单步中,误差随时间指数增长,因此 (3) 式可以写作

(4)ϵ(x,t)=m=1Meateikmx

其中 a 为常量。

由于误差所满足的差分方程是线性的(级数每一项的行为与整个级数一致),只估计一项的误差变化便足以估计整体趋势:

(5)ϵm(x,t)=eateikmx.

为找出误差随时间步的变化, 将方程 (5) 式应用于离散后的误差表达式上

  • ϵjn=eateikmxϵjn+1=ea(t+Δt)eikmxϵj+1n=eateikm(x+Δx)ϵj1n=eateikm(xΔx),

再代入到 (2) 式中,求解方程后可得

(6)eaΔt=1+αΔtΔx2(eikmΔx+eikmΔx2).

使用已知的指数三角关系式

cos(kmΔx)=eikmΔx+eikmΔx2sin2kmΔx2=1cos(kmΔx)2

可以将方程 (6) 变作

(7)eaΔt=14αΔtΔx2sin2(kmΔx/2).

定义涨幅因子

Gϵjn+1ϵjn,

则误差有限的充要条件为 |G|1 。 已知

(8)G=ea(t+Δt)eikmxeateikmx=eaΔt,

联立 (7) 和 (8) 两式,易得稳定性条件为

(9)|14αΔtΔx2sin2(kmΔx/2)|1

(10)αΔtΔx212.

(10) 即为该算法的稳定性条件。 对于 FTCS 求解一维热传导方程,给定 Δx , 所允许的 Δt 取值需要足够小以满足 (10) ,才能保证计算的数值稳定。

參考資料

Template:Reflist