4.2 向前 Euler 格式
为了用差分方法求解问题 (4.1.1)∼(4.1.3),将如下求解区域剖分。
Ω={(x,t)|0⩽x⩽1,0⩽t⩽T}
将区间 [0,1] 做 m 等分,将区间 [0,T] 做 n 等分,并记空间上的步长 h=1/m,时间上的步长 τ=T/n,此外 xi=ih,0⩽i⩽m,tk=kτ,0⩽k⩽n,用两簇平行直线
x=xi,0⩽i⩽mt=tk,0⩽k⩽n
将 Ω 分割成矩形的网格,记 Ωh={xi|0⩽i⩽m},Ωτ={tk|0⩽k⩽n},Ωhτ=Ωh×Ωτ,称 (xi,tk) 为结点;称 x=0,x=1 以及 t=0 上的结点为边界结点,其他所有结点为内部结点;称在直线 t=tk 上的所有结点 {(xi,tk)|0⩽i⩽m} 为第 k 层结点。
设 {vki|0⩽i⩽m,0⩽k⩽n} 为 Ωhτ 上的一个网格函数,引入以下记号:
4.2.1 差分格式的建立
定义 {Ωhτ} 上的网格函数
U={Uki|0⩽i⩽m,0⩽k⩽n},Uki=u(xi,tk)
在结点处考虑微分方程 (4.1.1),有
∂u∂t(xi,tk)−a∂2u∂x2(xi,tk)=f(xi,tk),1⩽i⩽m−1,0⩽k⩽n−1(4.2.1)
将
∂2u∂x2(xi,tk)=1h2[u(xi−1,tk)−2u(xi,tk)+u(xi+1,tk)]−h212∂4u∂x4(ξik,tk)=δ2xUki−h212∂4u∂x4(ξik,tk),xi−1<ξik<xi+1
和
∂u∂t(xi,tk)=1τ[u(xi,tk+1)−u(xi,tk)]−τ2∂2u∂t2(xi,ηik)=DtUki−τ2∂2u∂t2(xi,ηik),tk<ηik<tk+1
代入 (4.2.1) 得到
DtUki−aδ2xUki=f(xi,tk)+τ2∂2u∂t2(xi,ηik)−ah212∂4u∂x4(ξik,tk),1⩽i⩽m−1,0⩽k⩽n−1(4.2.2)
注意到初边值条件 (4.1.2) 和 (4.1.3) 有
U0i=φ(xi),0⩽i⩽m(4.2.3)
Uk0=α(tk),Ukm=β(tk),1⩽k⩽n(4.2.4)
在 (4.2.2)∼(4.2.4) 中略去小量项
R(1)ik=τ2∂2u∂t2(xi,ηik)−ah212∂4u∂x4(ξik,tk)(4.2.5)
用 uki 代替 Uki,得到如下差分格式:
Dtuki−aδ2xuki=f(xi,tk),1⩽i⩽m−1,0⩽k⩽n−1(4.2.6)
u0i=φ(xi),0⩽i⩽m(4.2.7)
uk0=α(tk),ukm=β(tk),1⩽k⩽n(4.2.8)
称差分格式 (4.2.6)∼(4.2.8) 为向前 Euler 格式,称 R(1)ik 为差分格式 (4.2.6) 的局部截断误差。记
c1=max⎧⎪⎨⎪⎩12max0⩽x⩽10⩽t⩽T∣∣∣∂2u∂t2(x,t)∣∣∣,a12max0⩽x⩽10⩽t⩽T∣∣∣∂4u∂x4(x,t)∣∣∣⎫⎪⎬⎪⎭(4.2.9)
则有
|R(1)ik|⩽c1(τ+h2),1⩽i⩽m−1,0⩽k⩽n−1(4.2.10)
4.2.2 差分格式的求解
记 r 称为步长比,表示为
r=aτh2
利用上式,可将差分格式 (4.2.6) 写成
uk+1i=(1−2r)uki+r(uki−1+uki+1)+τf(xi,tk),1⩽i⩽m−1,0⩽k⩽n−1
由于差分格式 (4.2.6)∼(4.2.8) 是显式的,有时也称差分格式 (4.2.6)∼(4.2.8) 为古典显式格式,可写成矩阵形式
⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣uk+11uk+12⋮uk+1m−2uk+1m−1⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦=⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣1−2rrr1−2rr⋱⋱⋱r1−2rrr1−2r⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣uk1uk2⋮ukm−2ukm−1⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦+⎡⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢⎣τf(x1,tk)+ruk0τf(x2,tk)⋮τf(xm−2,tk)τf(xm−1,tk)+rukm⎤⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥⎦
4.2.3 差分格式解的先验估计式
定理 4.2.1
考虑如下差分方程
Dtuki−aδ2xuki=gki,1⩽i⩽m−1,0⩽k⩽n−1(4.2.11)
u0i=φi,0⩽i⩽m(4.2.12)
uk0=0,ukm=0,1⩽k⩽n(4.2.13)
设 u={uki|0⩽i⩽m,0⩽k⩽n} 为上述差分方程的解,则当步长比 r⩽1/2 时,有
∥uk∥∞⩽∥φ∥∞+τk−1∑l=0∥gl∥∞,0⩽k⩽n
其中,∥gl∥∞=max1⩽i⩽m−1|gli|。
证明:将式 (4.2.11) 写成
uk+1i=(1−2r)uki+r(uki−1+uki+1)+τgki,1⩽i⩽m−1,0⩽k⩽n−1
则有
|uk+1i|⩽(1−2r)∥uk∥∞+r(∥uk∥∞+∥uk∥∞)+τ∥gk∥∞=∥uk∥∞+τ∥gk∥∞,1⩽i⩽m−1,0⩽k⩽n−1
于是
∥uk+1∥∞⩽∥uk∥∞+τ∥gk∥∞,0⩽k⩽n−1
递推可得
∥uk∥∞⩽∥φ∥∞+τk−1∑l=0∥gl∥∞,0⩽k⩽n
证毕。
4.2.4 差分格式解的存在性与唯一性
有差分格式求解的矩阵表达形式可以看出,对时间上第 k+1 层的值可由第 k 层的值显式表示出来。即若已知第 k 层的值 {uki|0⩽i⩽m},则由上式就可直接得到第 k+1 层上的值 {uk+1i|0⩽i⩽m},因而对于任意步长比 r,均是唯一可解的。即既有存在性,也有唯一性。
4.2.5 差分格式解的收敛性与稳定性
(1) 收敛性
给出关于差分格式解的收敛性的定理。
定理 4.2.2
设 {u(x,t)|0⩽x⩽1,0⩽t⩽T} 为定解问题的 (4.1.1)∼(4.1.3) 的解,{uki|0⩽i⩽m,0⩽k⩽n} 为差分格式 (4.2.6)∼(4.2.8) 的解,则当 r⩽1/2 时,有
max0⩽i⩽m|u(xi,tk)−uki|⩽c1T(τ+h2),0⩽k⩽n
其中,c1 由 (4.2.9) 定义。
证明:我们记误差
eki=u(xi,tk)−uki,0⩽i⩽m,0⩽k⩽n
将 (4.2.2)∼(4.2.4) 分别与 (4.2.6)∼(4.2.8) 相减,得到误差方程
Dteki−aδ2xeki=R(1)ik,1⩽i⩽m−1,0⩽k⩽n−1
e0i=0,0⩽i⩽m
uk0=0,ukm=0,1⩽k⩽n
应用定理 4.2.1,并注意到 (4.2.10),当 r⩽1/2 时,有
∥ek∥∞⩽τk−1∑l=0max1⩽i⩽m−1|R(1)il|⩽τc1k(τ+h2)⩽c1T(τ+h2),0⩽k⩽n
证毕。
(2) 稳定性
如果在应用差分格式 (4.2.6)∼(4.2.8) 时,计算右端函数 f(xi,tk) 有误差 gki,计算初值 φ(xi) 有误差 ψi,则实际得到的是如下差分方程的解
Dtvki−aδ2xvki=f(xi,tk)+gki,1⩽i⩽m−1,0⩽k⩽n−1(4.2.14)
v0i=φ(xi)+ψi,0⩽i⩽m(4.2.15)
vk0=α(tk),vkm=β(tk),1⩽k⩽n(4.2.16)
令
εki=vki−uki,0⩽i⩽m,0⩽k⩽n
将 (4.2.6)∼(4.2.8) 与 (4.2.14)∼(4.2.16) 相减,可得摄动方程组
Dtεki−aδ2xεki=gki,1⩽i⩽m−1,0⩽k⩽n−1(4.2.17)
ε0i=ψi,0⩽i⩽m(4.2.18)
εk0=0,εkm=0,1⩽k⩽n(4.2.19)
应用定理 4.2.1,当 r⩽1/2 时,有
∥εk∥∞⩽∥ψ∥∞+τk−1∑l=0∥gl∥∞,1⩽k⩽n
上式说明当 ∥ψ∥∞ 和 τ∑n−1l=0∥gl∥∞ 很小时,误差 max1⩽k⩽n∥εk∥∞ 也很小。
上述结果可陈述如下:
定理 4.2.3
当 r⩽1/2 时,差分格式 (4.2.6)∼(4.2.8) 关于初值和右端项在下述意义下是稳定的:考虑差分方程组
Dtuki−aδ2xuki=fki,1⩽i⩽m−1,0⩽k⩽n−1
u0i=ψi,0⩽i⩽m
uk0=0,ukm=0,1⩽k⩽n
设 {uki|0⩽i⩽m,0⩽k⩽n} 为上述差分方程组的解,则有
∥uk∥∞⩽∥u0∥∞+τk−1∑l=0∥fl∥∞,1⩽k⩽n
下面考虑 r>1/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,普通电脑可用
· 按钮权限的设计及实现
2020-04-12 经典分治 - 汉诺塔游戏