4.5 Crank-Nicolson 格式
本节对于定解问题 (3.1.1)∼(3.1.3) 建立一个具有 O(τ2+h2) 精度的无条件稳定的差分格式。
注意,对各个符号取上标 k+12 和取下标 k+12 的意义可能各不相同,需要仔细甄别。
4.5.1 差分格式的建立
(1) 建立差分格式
我们记 tk+12=12(tk+tk+1),在点 (xi,tk+12) 处考虑微分方程 (4.1.1),有
∂u∂t(xi,tk+12)−a∂2u∂x2(xi,tk+12)=f(xi,tk+12),1⩽i⩽m−1,0⩽k⩽n−1
应用公式
∂2u∂x2(xi,tk+12)=12[∂2u∂x2(xi,tk)+∂2u∂x2(xi,tk+1)]−τ28∂4u∂x2∂t2(xi,ζik),ζik∈(tk,tk+1)
可以得到
∂u∂t(xi,tk+12)−12a[∂2u∂x2(xi,tk)+∂2u∂x2(xi,tk+1)]=f(xi,tk+12)−aτ28∂4u∂x2∂t2(xi,ζik),ζik∈(tk,tk+1)
利用式子
∂2u∂x2(xi,tk)=δ2xUki−h212∂4u∂x4(ξik,tk),xi−1<ξik<xi+1
和式子
∂u∂t(xi,tk+12)=δtUk+12i−τ224∂3u∂t3(xi,ηik),tk<ηik<tk+1
得到
δtUk+12i−aδ2xUk+12i=f(xi,tk+12)+R(4)ik(4.5.1)
其中
δtUk+12i=1τ(Uk+1i−Uki),δ2xUk+12i=12(δ2xUk+1i+δ2xUki)
R(4)ik=τ2[124∂3u∂t3(xi,ηik)−a8∂4u∂x2∂t2(xi,ζik)]−ah224[∂4u∂x4(ξik,tk)+∂4u∂x4(ξi,k+1,tk+1)]
注意到初边值条件 (4.1.2) 和 (4.1.3),有
U0i=φ(xi),0⩽i⩽m(4.5.2)
Uk0=α(tk),Ukm=β(tk),1⩽k⩽n(4.5.3)
在 (4.5.1)∼(4.5.3) 中略去小量项 R(4)ik,并用 uki 代替 Uki,得到如下差分格式:
δtuk+12i−aδ2xuk+12i=f(xi,tk+12),1⩽i⩽m−1,0⩽k⩽n−1(4.5.4)
u0i=φ(xi),0⩽i⩽m(4.5.5)
Uk0=α(tk),Ukm=β(tk),1⩽k⩽n(4.5.6)
称差分格式 (4.5.4)∼(4.5.6) 为 Crank-Nicolson 格式。
(2) 局部截断误差
称 R(4)ik 为差分格式 (4.5.4) 的局部截断误差,记
c2=max⎧⎪⎨⎪⎩124max0⩽x⩽10⩽t⩽T∣∣∣∂3u∂t3(x,t)∣∣∣,a8max0⩽x⩽10⩽t⩽T∣∣∣∂4u∂x2∂t2(x,t)∣∣∣,a12max0⩽x⩽10⩽t⩽T∣∣∣∂4u∂x4(x,t)∣∣∣,⎫⎪⎬⎪⎭(4.5.7)
则有
R(4)ik⩽c2(τ2+h2),1⩽i⩽m−1,0⩽k⩽n−1(4.5.8)
4.5.2 差分格式的求解
记
uk=(uk0,uk1,⋯,ukm−1,ukm)
由式 (4.5.5) 知第 0 层上的值 u0 已知,设已经确定出了第 k 层的值 uk,则关于第 k+1 层值的差分格式为
δtuk+12i−aδ2xuk+12i=f(xi,tk+12),1⩽i⩽m−1
uk+10=α(tk+1),uk+1m=β(tk+1)
可以写成如下矩阵形式
⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣1+r−r2−r21+r−r2⋱⋱⋱−r21+r−r2−r21+r⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣uk+11uk+12⋮uk+1m−2uk+1m−1⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦=⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣1−rr2r21−rr2⋱⋱⋱r21−rr2r21−r⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣uk1uk2⋮ukm−2ukm−1⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦+⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣r2(uk0+uk+10)+τf(x1,tk+12)τf(x2,tk+12)⋮τf(xm−2,tk+12)r2(ukm+uk+1m)+τf(xm−1,tk+12)⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦(4.5.9)
由式 (4.5.9) 可知在每一个时间层式 (4.5.4)∼(4.5.6) 在每一个时间层均为一个三对角线性方程组,具体算法可采用追赶法求解。
4.5.3 差分格式解的先验估计式
定理 4.5.1
考虑差分方程组
δtuk+12i−aδ2xuk+12i=fk+12i,1⩽i⩽m−1,0⩽k⩽n−1(4.5.10)
u0i=φi,1⩽i⩽m−1(4.5.11)
uk0=0,ukm=0,0⩽k⩽n(4.5.12)
设 {vki|0⩽i⩽m,0⩽k⩽n} 为上述差分方程组的解,则对任意步长比 r,有
∥uk∥2⩽∥u0∥2+112aτk−1∑l=0∥fl+12∥2,0⩽k⩽n(4.5.13)
|uk|21⩽|u0|21+12aτk−1∑l=0∥fl+12∥2,0⩽k⩽n(4.5.14)
∥uk∥∞⩽12(|u0|21+12aτk−1∑l=0∥fl+12∥2)1/2,0⩽k⩽n(4.5.15)
证明:
证毕。
4.5.4 差分格式解的存在性与唯一性
定理 4.5.2
差分格式 (4.5.4)∼(4.5.6) 的解存在且唯一。
证明:差分格式 (4.5.4)∼(4.5.6) 对应的矩阵形式为式 (4.5.9),易见其系数矩阵是严格对角占优的,因而存在唯一解。
证毕。
4.5.5 差分格式解的收敛性与稳定性
(1) 收敛性
给出差分格式的收敛性的相关定理。
定理 4.5.3
设 {u(x,t)|0⩽x⩽1,0⩽t⩽T} 为定解问题 (3.1.1)∼(3.1.3) 的解,{uki|0⩽i⩽m,0⩽k⩽n} 为差分格式 (4.5.4)∼(4.5.6) 的解,则对任意步长比 r,有
max1⩽i⩽m−1|u(xi,tk)−uki|⩽c22√T2a(τ2+h2),1⩽k⩽n
其中,c2 由式 (4.5.7) 定义。
证明:
证毕。
(2) 稳定性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现