二阶椭圆型第一边值问题的数值解法(五点差分格式和有限体积法)附matlab代码
这里我们介绍五点差分格式和有限体积法求椭圆型第一边值问题,
题目:
分别采用矩形网格的五点差分格式和有限体积法求椭圆型第一边值问题,
− ∂ 2 u ∂ x 2 − ∂ 2 u ∂ y 2 + a ∂ u ∂ x = 0 , a > 0 , -\frac{\partial^2u}{\partial x^2}-\frac{\partial^2u}{\partial y^2}+a\frac{\partial u}{\partial x}=0,a>0, −∂x2∂2u−∂y2∂2u+a∂x∂u=0,a>0,
u ( 0 , y ) = s i n ( π y ) , u ( 1 , y ) = 0 , 0 < y < 1 , u\left(0,y\right)=sin\left(\pi y\right),u\left(1,y\right)=0,0<y<1, u(0,y)=sin(πy),u(1,y)=0,0<y<1,
u ( x , 0 ) = u ( x , 1 ) = 0 , 0 < x < 1. u\left(x,0\right)=u\left(x,1\right)=0,0<x<1. u(x,0)=u(x,1)=0,0<x<1.
取参数 a = 40,得到不同网格最大误差和收敛阶。
问题分析
(i) 矩形网格的五点差分法:
Step1:网格剖分。取定沿 x,y 轴方向的步长分别为: h x , h y h_x,h_y hx,hy,便于计算我们取 h x = h y h_x=h_y hx=hy,令 h = h x 2 + h y 2 h =\sqrt{h_x^2+h_y^2} h=hx2+hy2,作两族平行于 x,y 轴的直线 x = x i , y = y i x=x_i,y=y_i x=xi,y=yi,其中 x i = x 0 + i h x , i = 0 , 1 , 2 , ⋯ , N , y j = y 0 + j h y , j = 0 , 1 , 2 , ⋯ , N x_i=x_0+ih_x,i=0,1,2,\cdots,N,y_j=y_0+jh_y,j=0,1,2,\cdots,N xi=x0+ihx,i=0,1,2,⋯,N,yj=y0+jhy,j=0,1,2,⋯,N,两族直线的交点 ( i h x , j h y ) (ih_x,jh_y) (ihx,jhy)称为网点或者节点,记为 ( x i , y j ) (x_i , y_j) (xi,yj) .
Step2:微分算子离散.
在正则节点 ( x i , y j ) (x_i , y_j) (xi,yj)上沿 x,y 方向分别使用中心差商公式对 u x x u_{xx} uxx和 u y y u_{yy} uyy 作近似,得到方程的五点差分格式为:
− ( u i + 1 , j − 2 u i , j + u i − 1 , j h x 2 + u i , j + 1 − 2 u i , j + u i , j − 1 h y 2 ) + a u i + 1 , j − u i − 1 , j 2 h x = 0 -\left(\frac{u_{i+1,j}-2u_{i,j}+u_{i-1,j}}{h_x^2}+\frac{u_{i,j+1}-2u_{i,j}+u_{i,j-1}}{h_y^2}\right)+a\frac{u_{i+1,j}-u_{i-1,j}}{2h_x}=0 −(hx2ui+1,j−2ui,j+ui−1,j+hy2ui,j+1−2ui,j+ui,j−1)+a2hxui+1,j−ui−1,j=0
⇒ \Rightarrow ⇒
( − 1 h x 2 − a 2 h x ) u i − 1 , j + ( 2 h x 2 + 2 h y 2 ) u i , j + ( − 1 h x 2 + a 2 h x ) u i + 1 , j + ( − 1 h y 2 ) u i , j − 1 + ( − 1 h y 2 ) u i , j + 1 = 0 , i , j = 1 , 2 , ⋯ , N − 1 \left(-\frac{1}{h_x^2}-\frac{a}{2h_x}\right)u_{i-1,j}+\left(\frac{2}{h_x^2}+\frac{2}{h_y^2}\right)u_{i,j}+\left(-\frac{1}{h_x^2}+\frac{a}{2h_x}\right)u_{i+1,j}+\left(-\frac{1}{h_y^2}\right)u_{i,j-1}+\left(-\frac{1}{h_y^2}\right)u_{i,j+1}=0,i,j=1,2,\cdots,N-1 (−hx21−2hxa)ui−1,j+(hx22+hy22)ui,j+(−hx21+2hxa)ui+1,j+(−hy21)ui,j−1+(−hy21)ui,j+1=0,i,j=1,2,⋯,N−1
Let
A = [ 2 h x 2 + 2 h y 2 − 1 h x 2 + a 2 h x 0 ⋯ 0 0 − 1 h x 2 − a 2 h x 2 h x 2 + 2 h y 2 − 1 h x 2 + a 2 h x ⋯ 0 0 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ 0 0 0 ⋯ − 1 h x 2 − a 2 h x 2 h x 2 + 2 h y 2 ] A=\left[\begin{matrix}\frac{2}{h_x^2}+\frac{2}{h_y^2}&-\frac{1}{h_x^2}+\frac{a}{2h_x}&0&\cdots&0&0\\-\frac{1}{h_x^2}-\frac{a}{2h_x}&\frac{2}{h_x^2}+\frac{2}{h_y^2}&-\frac{1}{h_x^2}+\frac{a}{2h_x}&\cdots&0&0\\\cdots&\cdots&\cdots&\cdots&\cdots&\cdots\\0&0&0&\cdots&-\frac{1}{h_x^2}-\frac{a}{2h_x}&\frac{2}{h_x^2}+\frac{2}{h_y^2}\\\end{matrix}\right] A=
hx22+hy22−hx21−2hxa⋯0−hx21+2hxahx22+hy22⋯00−hx21+2hxa⋯0⋯⋯⋯⋯00⋯−hx21−2h