Chapter 7 边值问题的有限差分法

Laplace 方程:Δu(x)=0,Δ:=i=1n2xi2

Δ=(拉普拉斯算子:梯度的散度)

Poisson 方程:Δu(x)=f(x)

一维区间 Ω=(a,b)边值类型

  • Dirichlet 条件:u(a)=α,u(b)=β
  • 混合条件:u(a)=α,ux|b=β
  • Neumann 条件:ux|a=α,ux|b=β

定理 7.7

假设 fg 是充分光滑的函数,则方程:

Δϕ=fin  Ωnϕ=gon  Ω

在满足额外条件(“高斯定理”):

ΩfdV=ΩgdA.

时,有唯一解(在相差一个常数的意义下)。

【例 7.8】

考虑把向量场分解成无旋、无散两个部分:

{v=v+ϕv=0,×ϕ=0.

因为无散场 v 满足条件 Ωvn=0 ,所以可以通过求解如下 Poisson 方程 + Neumann 边值条件来求解:

Δϕ=vin  Ωnϕ=n(vv)=nvon  Ω,

下面考察这个问题解的存在唯一性(根据【定理 7.7】):

ΩvdV=Ω(vv)dV=Gauss LawΩn(vv)dA.

7.1 有限差分格式

「线性边值问题」有限差分法的步骤如下:

  1. 把问题区域离散化成网格;
  2. 用不同格点的函数值来近似偏导值,根据问题的约束列出线形方程组 AU=F
  3. 求解线性方程组,根据格点函数值来近似原函数。

例 7.10】一维 Poisson 方程 + Dirichlet 边值条件

u(x)=f(x),xΩ:=(0,1)u(0)=α,u(1)=β

  1. 建立网格:xj=jh,h=1m+1,j=0,1,,m+1.
    U0=α,Um+1=β,方程的未知数为 U1,,Um (作为 u(xj) 的近似)。
  2. 二阶导近似:

u(xj)=u(xj1)2u(xj)+u(xj+1)h2+O(h2)

  1. 根据 Uj12Uj+Uj+1h2=f(xj),j=1,,m,得到方程 AU=F

7.2 误差和一致性

有限差分法的误差(global error) 是 E=UU^。其中 U 为求解方程得到的解向量,U^ 是格点处的原函数值。

网格函数(grid function)g:XR,其中 X 是离散网格。

q-范数

一维网格 X:=x1,,xNg 定义在 X 上。

gq=(hi=1N|gi|q)1q

  1. 1范数:g1=hi=1N|gi|;
  2. 范数:g=max1iN|gi|

局部截断误差(LTE):导数值用有限差分替代所导致的误差(是一个理论值)。

比如:D2u(xj):=u(xj12u(xj)+u(xj+1))h2 的 LTE 为 τj=D2u(xj)(u(xj))=h212u(xj)+O(h4)=O(h2).

引理 7.17

对于 (0,1) 上一维线性边值问题 Lu=f(x),若使用有限差分方法得到 AU=F,则该方法的 LTE 为 τ=AU^F。其中 F=(f(x1),,f(xm))

证明】以 【例 7.10】为例:

(AU^F)j=u(xj1)2u(xj)+u(xj+1)h2+Δu(xj).

引理 7.18】LTE 和 全局误差的关系为 AE=τ

证明AE=A(UU^)=F(F+τ)=τ

一致性:称有限差分法关于边值问题一致若:

limh0τh=0,

其中 τh 是 LTE(这里 h 是上标)。

7.3 稳定性和收敛性

收敛性:有限差分法收敛若 limh0Eh=0,其中 Eh 是全局误差, 是一种 q 范数。

稳定性: 有限差分法稳定,若

  • h0R+,满足 h(0,h0),det(A)0;
  • limh0A1=O(1)

定理 7.22

一致且稳定的有限差分法是收敛的。

证明

limEhlim(Ah)1limτhClimτh=0,

这里向量范数与之前定义的 q范数之间的关系是: Eq=h1qE

7.3.1 2-范数下收敛

矩阵范数的定义为 A=sup{Axx:xRn,x0}=sup{Ax:x=1}.

常见的矩阵范数如下:

{A=max1inj=1n|aij|,(最大行)A1=max1jni=1n|aij|,(最大列)A2=ρ(ATA),ρ(B):=maxi|λi(B)|,(最大特征值)

引理 7.25

例 7.10】 中

A=1h2[2112112112112].

λk(A)=4h2sin2kπ2(m+1)wk,j=sinjkπm+1j,k=1,2,,m

证明】直接代入计算

定理 7.27

例 7.10】中的有限差分法 2 阶收敛。

证明

根据 A 的对称性

A2=ρ(A2)=ρ(A)4h2

由 【引理 7.25A 非奇异。

并且

limh0A12=limh01min|λk(A)|=limh0h24sin2πh2=1π2

所以 FD 方法稳定。

因为 LTE 满足

limh0|τj|=|h212u(xj)+O(h4)|=0limh0τh=0

所以 FD 方法一致。

根据 【定理 7.22】,FD 方法 2 阶收敛。

7.3.2 Green 函数

【定义7.28】对任意给定的 x¯[0,1]Green 函数 G(x;x¯) 为 BVP {u(x)=δ(xx¯)u(0)=u(1)=0 的解。

image-20240228232123973

【引理7.29】根据边值条件和脉冲函数的积分值可以得到,Green 函数的表达式为

G(x;x¯)={(x¯1)x,x[0,x¯]x¯(x1),x[x¯,1]

证明:

ϵ,x0ϵx0+ϵG(x)dx=x0ϵx0+ϵδ(xx¯)dx={0,x¯(x0ϵ,x0+ϵ)1,x¯(x0ϵ,x0+ϵ)

取极限 ϵ0, 由微积分基本定理得

limϵ0G(x0+ϵ)limϵ0G(x0ϵ)={0,x0(0,x¯)(x¯,1)1,x0=x¯

G(x,x¯)={ax+b,x[0,x¯]cx+d,x[x¯,1],根据 c=a+1,b=0,c+d=0,ax¯+b=cx¯+da=x¯1,b=0,c=x¯,d=x¯

【推论7.30】方程 {u(x)=cδ(xx¯)u(0)=u(1)=0 的解为 cG(x;x¯)

7.3.3 ∞范数下收敛

引理 7.31

对于矩阵 A

A=1h2[2112112112112].

其逆矩阵 B=A1 为:

bij=hG(xi;xj)={h(xj1)xi,ij,hxj(xi1),ij.

即:

B=h[x1(x11)x1(x21)x1(xm1)x1(x21)x2(x21)x2(xm1)x1(xm1)x2(xm1)xm(xm1)]

其中 xj=jm+1

证明

A 的第 i 行(乘 h2)和 B 的第 j 列(乘 1/h)如下:

[0,,0,1,2,1,0,,0][x1(xj1)xj1(xj1)xj(xj1)xj(xj+11)xj(xm1)]={2xj(xj1)xj1(xj1)xj(xj+11)=hi=j(xj1)(2xixi1xi+1)=0i<jxj[2(xi1)(xi11)(xi+11)]i>j

定理 7.32

接 【引理 7.31】,B=A1 满足

B=max1imj=1m|bij|1.

证明

j=1m|bij|=j=1ihxj|xi1|+j=i+1mhxi|xj1|j=1ih(mm+1)2+j=i+1mh(mm+1)2[xjmm+1,|xi1|1]=mh(mm+1)2=(mm+1)31.

7.4 A solution via Green’s function

【引理7.33】设 L 是可逆的线性算子,满足 Lu(x)=f(x),则有 u(x)=G(x;x¯)f(x¯)dx¯,其中 G 满足 LG(x;x¯)=δ(xx¯)

证明:因为 LG(x;x¯)=δ(xx¯),所以 LG(x;x¯)f(x¯)dx¯=δ(xx¯)f(x¯)dx¯=f(x)

根据线性性,LG(x;x¯)f(x¯)dx¯=f(x),由可逆性得到结论。

【定理7.34】Drichlet BVP {u(x)=f(x)u(0)=α,u(1)=β 的解为 u(x)=αG0(x)+βG1(x)+u^(x)。其中,

{G0(x)=0,G0(0)=1,G0(1)=0G0(x)=1x,

{G1(x)=0,G1(0)=0,G1(1)=1G0(x)=x,

{U^(x)=f(x),U^(0)=0,U^(1)=0U^(x)=01f(x¯)G(x;x¯)dx¯.

引理7.35】对于 {u(x)=f(x)u(0)=α,u(1)=β 这样的边值问题,一个右端项 fO(ϵ) 扰动带来 O(ϵh) 的误差,对于 Dirichlet 条件的 O(ϵ) 的扰动,带来 O(ϵ) 的误差。

证明:

离散化后得到 AgUg=Fg,其中,

Ag=1h2[h201211211211210h2],Ug=[U0UUm+1],F=[f(x1)f(x2)f(xm1)f(xm)],Fg=[αFβ]

B=A1,Bg=Ag1=[0Tbg,0Bbg,m+10T],则有

Ug=[0Tbg,0Bbg,m+10T][αFβ]=αbg,0+βbg,m+1+[0BF0]

因为 B=O(h),所以可以得到结论1。可以证明 bg,0bg,m+1 是常数级别的,由此得到结论2。

7.5 其他边值条件

例 7.36】二阶边值问题+混合边值条件

u(x)=f(x)in  (0,1)u(0)=σ,u(1)=β

此时 x=0 处的函数值未知。

  • [方法一]

    使用 U1U0h=σ

    x0=0 处的 LTE 仅有一阶精度:

τ0=1h2(hu(x1)hu(x0))σ=u(x0)+12hu(x0)+O(h2)σ=12hu(x0)+O(h2)

  • [方法二]:编程使用

    延拓一个点 x1=h,使用 U1U12h=σ,此时为二阶精度。

    为了消掉 x1,增加条件 1h2(U12U0+U1)=f(x0),则得到 1h(U0+U1)=σ+h2f(x0)

  • [方法三]

    使用 U0,U1,U2 来估计 u(0)1h(32U02U1+12U2)=σ+O(h2)

    得到新的矩阵:

AF=1h2[32h2h12h1211211210h2].

例 7.38】二阶边值问题+Neumann条件

u(x)=f(x)in  (0,1),u(0)=σ0,u(1)=σ1.

为了保证解的存在性,需要满足:

01f(x)dx=01u(x)dx=u(1)u(0)=σ1σ0.

处理方法类似 【例 7.36】。

根据方法一:

AFUE=FFAF=1h2[hh121121121hh].FF=[σ0+h2f(x0)f(x1)f(xm)σ1+h2f(xm+1)]

引理 7.39

例 7.38】 中矩阵 AF 满足 dimN(AF)=1。(N 即 Kernel)。

证明

显然 e=[1,1,,1]T 属于 AF 的零空间。

如果定下了 Um+1 的值,则变为混合边界条件,其解唯一,所以零空间秩为1。

定理 7.40】(可解性)

例 7.38】 中方程有解,当且仅当

h2f(x0)+hi=1mf(xi)+h2f(xm+1)=σ1σ0

证明

根据代数基本定理

f:UVAf 对应的矩阵。

V=ImAKerAT

Rm+2=R(AF)N(AFT)

dimN(AFT)=dimN(AF)(因为 A 是方阵)。

可以验证 N(AFT)=span{[1,h,,h,1]T}

”:因为 h2f(x0)+hi=1mf(xi)+h2f(xm+1)=σ1σ0,所以 FFN(AF) 正交,所以 FFR(AF)。则说明方程有解。

"":FFR(AF) 可以推出上式。

7.6 二维边值问题

例 7.41-7.42】二维 BVP+Dirichlet条件

2x2u(x,y)2y2u(x,y)=f(x,y)Ω:=(0,1)2u(x,y)|Ω=0

建立网格:

xi=ih,yj=jh,i,j=0,1,,m,m+1,h=Δx=Δy=1m+1

对于 f(xi,yj)=(2x22y2)u(xi,yj),作如下近似:

fij=Ui1,j2Ui,j+Ui+1,jh2Ui,j12Ui,j+Ui,j+1h2.

m×m 个方程组成方程组 A2DU=F

LTE 的计算如下:

τi,j=112h2(4ux4+4uy4)|(xi,yj)+O(h4).

引理 7.44

例 7.41-7.42】中全局误差 E=UU^。则 A2DE=τ

7.6.1 Kronecker product

定义7.45】称 ACm×nBCp×q 的 Kronecker 积为 ABCmn×pq

AB=[a11Ba12Ba1nBa21Ba22Ba2nBan1Ban2BannB].

定义7.47】称 XCm×n 的拉直为 vec(X)Cmn,为将 X 的各列从上到下从左到右排列的列向量。

【引理7.48】任意 ACm×m,BCn×n,XCm×n 满足:

vec(AX)=(InA)vec(X),vec(XB)=(BTIm)vec(X).

证明:

vec(AX)=vec([AX1,AX2,,AXn])=[AX1,AX2,,AXn]T=[AAA][AX1,AX2,,AXn]T=(InA)[AX1,AX2,,AXn]T

Y=XB,则 Yj=Xbjykj=i=1nxkibij

C=BTIm,则 Cij=bijIm

D=Cvec(X),则 Dj=i=1nCjiXi=i=1nbijImXi=i=1nbijXid(k,j)=i=1nbijxki=i=1nxkibij

所以 vex(Y)=D,即 vec(XB)=(BTIm)vec(X)

7.6.2 Convergence in the 2-norm

【引理7.49】引入中的线性方程组 A2DU=F 等价于 AUm×m+Um×mA=Fm×m。其中 Um×m(i,j) 个元素,是格点 (i,j) 的解,(Fm×m)ij=f(ih,jh)A=1h2[2112112112112]

证明:

(AUm×m)ij=1h2(Ui1,j+2UijUi+1,j)(Um×mA)ij=1h2(Ui,j1+2UijUi,j+1)(AUm×m+Um×mA)ij=1h2(Ui1,jUi,j1+4Ui,jUi+1,jUi,j+1)AUm×m+Um×mA=F

【引理7.50】1D 问题中的 A 满足:vec(AU+UA)=(ImA+A×Im)vec(U)

证明: vec(AU)=(Im×A)vec(U),vec(UA)=(ATIm)vec(U)=(AIm)vec(U)

【定理7.51】A2D=ImA+AIm,U=vec(Um×m),F=vec(Fm×m)

【定义7.52】称 n 维空间的离散拉普拉斯算子为

例如:对于 n=3A3D=AImIm+ImAIm+ImImA

【定理7.54】A2D 的特征值为 λij=λi+λj,Wij=vec(wiwjT) ,i,j=1,,m,$$

证明:

AwiwjT+wiwjTA=λiwiwjT+wiwjTAT=λiwiwjT+wi(Awj)T=(λi+λj)wiwjT

所以,

A2Dvec(wiwjT)=(ImA+AIm)vec(wiwjT)=vec(A(wiwjT)+(wiwjT)A)=(λi+λj)vec(wiwjT).

【定理7.55】方程 uxxuyy=f(x,y) 的有限差分算法在 2-范数下是 2 阶收敛的。

证明:

因为 A2D 是对称的,所以 A2D2=ρ(A2D),根据【定理7.53】,所以

limh0A2D12=limh01min|λij|=limh0h28sin2πh2=12π2=O(1).

所以算法是稳定的。根据【定理7.22】算法是二阶收敛的。

7.6.3 Convergence in the max-norm via a discrete maximum principle

【定理7.56】方程 uxxuyy=f(x,y) 的有限差分算法在 -范数下是 2 阶收敛的。

证明:

XIX 的内点,即删去(i=0,m+1j=0,m+1 的网格点后的网格)。

定义线性映射 A^2D:{XR}{XIR}

A^2DUi,j:=(A^2DU)i,j=1h2(4Ui,jUi+1,jUi1,jUi,j+1Ui,j1)

A^2DA2D 的矩阵是不相同的,(维数不同,作用效果也不同)。

定义 ϕ:R2Rϕ(x,y)=(x12)2+(y12)2,ϕi,j=ϕ(ih,jh)

A^2Dϕi,j=4

E,τ:XR 分别为总体误差和 LTE,记 τm:=maxi,j|τi,j|

定义网格函数 ψ:XR,ψi,j=Ei,j+14τmϕi,j,又因为 A^2DEi,j=τi,j

A^2Dψi,j=τi,jτm0,这说明 ψi,j 一定比其四联通相邻的4个网格点之一小,因此 ψ 的最大值在边界处取得。ϕi,j 的最大值是 12Ei,j 在边界上是 0,所以:

C>0,Ei,jψi,j18τmCh2

定义 χ:XR,χi,j=Ei,j+14τmϕi,j,则类似地有 Ei,jχi,j18τmCh2

注解:

定义 XΩ 为 BVP 地离散点集合,即待求值的点的集合,XΩ 为 BVP 的边界离散点的集合,即已知值的点的集合(Dirichlet条件),以及 “ghost cell”(方便程序设计而加的 Ω 外的点)。比如 [0,1]2 的四个角。

【引理7.58】(离散最大值原理)

设 BVP 的 FD 离散化为 PXΩ,(LhU)PfP+gP=0fP 是方程的右端项,gP 是除 Dirichlet 外的边界条件(因为 Dirichlet 已包含在 Lh 中)。Lh,XΩ 满足:

(DMP-1) PXΩ,LhUP=cPUPQQPcQUQ,其中 QPXΩXΩ,cP>0,cQ>0,称 {P}QPLh 上的 P-stencil (P-模版);

(DMP-2) PXΩ,cPQQPcQ

(DMP-3) XΩ 是联通的,即 P0,PmXΩ,P1,P2,,Pm1, s.t.r=1,2,,m,PrPr1-模版中。

(DMP-4) (DMP-1) 中至少有一个方程包含了由 Dirichlet 边界条件给出的 UQ

则对于任意网格函数 ψ:XR,满足 {maxPXψP0PXΩ,LhψP0

则有 maxPXΩψPmaxQXΩψQ

证明:

MΩ=maxQXΩψQ>MΩ=maxQΩψQ,令 Pψ 达到 MΩ 的点,则有

MΩ=ψP1cPQQPcQψQ1cPQQPcQMΩMΩ

第二个 '=' 能取到当且仅当 Q,ψQ=ψP,由 (DMP-3) ψ 在任意离散点处都取到相同的值 MΩ,矛盾!

【定理7.60】考虑 BVP 的满足 (DMP-1,2,3,4) 的 FD 格式,则其全局误差 EP:=UPu(P) 有界:

PX,|EP|Tmax(maxQXΩϕ(Q))

其中 Tmax=maxPXΩ|TP|TPP 处的 LTE,ϕ:XR 是一个非负函数满足 PXΩ,LhϕP1

证明:

根据【引理7.58】LhEP=TP。定义 ψP:=EP+TmaxϕP,则 LhψPTPTmax0。进一步地,因为 ϕP0,所以 maxPXψP0QXΩ,EQ=0

EPmaxPX(EP+TmaxϕP)maxQXQ(EQ+TmaxϕQ)=TmaxmaxQXΩ(ϕQ).

ψP=EP+TmaxϕP 同样处理,得 EPTmaxmaxQΩ(ϕQ)

7.6.4 不规则区域上的收敛性

例 7.61】不规则区域二维 BVP + Dirichlet 条件

2x2u(x,y)2y2u(x,y)=f(x,y)

网格点称作是 regular 的,当其可以使用 5 点差分法,否则是 irregular 的点。

比如对于下图中的 P 点,列出的方程为:

LhUP:=(1+θ)UPUAθUW12θ(1+θ)h2+(1+α)UPUBαUS12α(1+α)h2.LhUP=fP

练 7.62】在 例 7.61 中,非正则点处的 LTE 是 O(h),而正则点处的 LTE 是 O(h2)

定理 7.63】在 定理 7.60 中,令 XΩ=X1X2,X1X2=,若非负函数 ϕ:XR 满足

PX1,LhϕPC1<0;PX2,LhϕPC2<0,

并且 LTE 满足

PX1,|TP|<T1;PX2,|TP|<T2.

则总误差 EP:=UPu(P) 满足

PX,|EP|(maxQXΩϕ(Q))max{T1C1,T2C2}.

定理7.65例 7.61 中的 FD 格式在∞范数下二阶收敛。

证明:

定义 ϕ(x,y)={F1[(xp)2+(yq)2](x,y)XΩF1[(xp)2+(yq)2]+F2(x,y)XΩ,其中 (p,q)Ω 的几何重心,F1,F2>0 待定,正则点和非正则点均属于 XΩ,不同点在于,对于正则点 QLhϕQ=4F1,对于非正则点 P2θ(1+θ)h2<1h2LhϕP<4F11h2F2<1h2F2。根据【练 7.62】,有 T1=K1h2,T2=K2h,所以 |EP|(F1R2+F2)max{K1h24F1,K2h3F2}RΩ 中点到重心的最长距离,取 F1F2=K14K2h,有 PX,|EP|14K1R2h2+K2h3

考虑例 7.61图中的非正则点:

LhϕP=F1[(1+θ)(xPp)2θ(xPhp)2(xP+θhp)2]F212θ(1+θ)h2+F1[(1+α)(xPq)2α(xPhq)2(xP+αhq)2]F212α(1+α)h2=8F1F2(2θ(1+θ)h2+2α(1+α)h2)<8F12h2F2<2h2F2

所以 |EP|(F1R2+F2)max{K1h24F1,K2h32F2}|EP|14K1R2h2+12K2h3.

事实上,只有一个方向的stencil不可达的非正则点的误差更大,不应该用例 7.61图中的非正则点来估计。

Programming 相关

二维 Poisson 方程:Δu=f in  Ω

问题区域: [xl,xr]×[yl,yr],或者从中去掉一个圆盘:D:(xcx)2+(ycy)2=R2

  • u(x,y)=exp(y+sin(x))
  • u(x,y)=sinxsiny
  • u(x,y)=ln(1+x2+y2)

注意

  • 纯 Neumann:有一个自由常数,可以强行左下角的点等于 1

  • Regular 情况:

    • Dirichlet:一共 (N+1)24 个点,对于内部 (N1)2 个点列五点差分,对于边界 4(N1) 个点直接求值;

    • Neumann:一共 (N+3)24 个点,对于已有 (N+1)2 个点列五点差分,对于延拓的 4(N+1) 个点列导数条件;

      image-20240201025049602
    • mixed:考虑四个角,如果两侧都是 Neumann,需要把角两边的点也延拓;如果两侧都是 Dirichlet,角不需要考虑;如果两侧条件不一样,则角需要考虑,但不用延拓角两边的点,可以直接取它根据 Dirichlet 边算出来的值,具体如下:

      image-20240201024848821
  • Irregular 情况:

    [原方案——写出来2阶硬是跑成了1阶收敛]

    限制:圆与外框不相交,不相切!圆内至少有4个格点。

    • 边界条件如上。

    • 内部格点均可以列五点差分。

    • 圆与格线交点(可能直接就是格点),Dirichlet 直接求值,Neumann 要想满足收敛阶需要更多的点(6个)。

    • 圆内部延拓出来的点,列一个割线近似的方程。

      image-20240201025727047

      [最终采纳方案⬇️]

不过点不能像下面某些取2*3的点阵,得保证一定有横纵坐标都不相同的3个才行。

IMG_79768E0B0EC5-1

posted @   PaperCloud  阅读(781)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
历史上的今天:
2019-01-25 [bzoj 4566][Haoi 2016]找相同字符
2019-01-25 [模板]后缀自动机
点击右上角即可分享
微信分享提示