首页 > 范文大全 > 正文

一种椭圆形方程的差分格式及迭代法求解

开篇:润墨网以专业的文秘视角,为您筛选了一篇一种椭圆形方程的差分格式及迭代法求解范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:有限差分法是解偏微分方程的一个重要数值方法。对正方形域上的Laplace方程的第一边值问题用差分法建立了其差分格式,并用Jacobi迭代法、Gauss-Seidel迭代法和超松弛迭代法(SOR法)对该差分格式进行求解。对三种迭代法进行编程并上机实践,求得相应数值解,通过表格对运行结果进行了比较。

关键词:差分格式;Jacobi迭代法;Gauss-seidel迭代法;超松弛迭代法

一、问题及其差分格式

考虑正方形域上的Laplace方程的第一边值问题:

uxx+uyy=0,(0

容易验证方程(1)的精确解为:u(x,y)=■sinπy.

在xoy平面上作两组平行直线:x=x0+ih,y=y0+jh(i,j=0,±1,±2…).(x0,y0)是xoy平面上的任意一点,取(x0,y0)为坐标原点(0,0),步长h=■,这样,整个平面就被这两组平行直线构成的正方形网格所覆盖,两组平行直线的交点称为网格结点,只考虑属于正方形区域[0,1;0,1]的结点。若一个结点的四个相邻接点都属于[0,1;0,1],则称此结点为内部结点;若一结点的四个相邻结点至少有一个不属于[0,1;0,1],则称此结点为边界结点。在每一个内部结点上,用二阶中心差代替问题中的二阶导数:

(uxx)■=(■)■≈■

=■

(uyy)■=(■)■≈■

=■

则有:(■)■+(■)■

≈■

由此得到(1)的差分格式为:uij=■(ui+1, j+ui-1, j+ui, j+1+ui, j-1).(i,j=1,2,…n-1),其中u(0,y)=u(x,0)=u(x,1)=0,u(1,y)=sinπy.

二、三种迭代方法及收敛性比较

对线性方程组Ax=b,系数矩阵A=(aij)n×n非奇异,且A的主对角元aij≠0(i=1,2…n).

1.Jacobi迭代法

将A分裂成A=D-(D-A),其中D=diag(a11,a22…ann),于是方程Ax=b可以写成Dx=(D-A)x+b或x=(E-D-1A)x+D-1b (2)

令B=E-D-1A,g=D-1b,则(2)可写成:x=Bx+g

这样得到了迭代公式:

xk=Bxk-1+g(k=1,2…) (3)

2.Gauss-Seidel迭代法

将A分裂成:A=D(E-L)-DU

其中:D=diag(a11,a22,…ann),

L=0 0 … 0 0-■ 0 … 0 0-■ -■ … 0 0 … … …-■ -■ … -■ 0

U=0 -■ … -■ -■0 0 … -■ -■ … … …0 0 … 0 -■0 0 … 0 0

对比(2)和(3)则得出:B=L+U

于是方程Ax=b可以写成:D(I-L)x=DUx+b (4)

显然D和I-L都是非奇异的,因此可以用(I-L)-1D-1左乘上式的两端,得出:

x=(I-L)-1+Ux+(I-L)-1D-1b

由此得Gauss-Seidel迭代法的迭代公式:

由此可见Gauss-Seidel迭代法是Jacobi迭代法的修正。

表1 Jacobi和Gauss-Seidel迭代法收敛速度的比较

续表

其中误差容限TOL取0.5E-8,π取3.1415926。由表1的结果可知,Jacobi迭代法比Gauss-Seidel迭代法迭代公式简单,但收敛速度比Gauss-Seidel迭代法慢。当剖分网格加细即N增大时,误差随着减小,迭代次数相应增大,所得结果在误差范围内,基本达到要求,验证了该方法的可行性。

3.SOR迭代法

令:■

■ (6)

引入了中间变量■,ω为松弛因子,当ω=1时,(6)即为Gauss-Seidel迭代法。

把(6)中的中间量■消去,可得SOR迭代法的迭代公式:

三、三种迭代法的解与准确解的比较

表2 N=6,ω=1.4,迭带次数k=20时的解及误差

从表2可以看出,SOR迭代法收敛速度最快。在实用中我们更多地采用SOR迭代法,其收敛速度与ω有关,而松弛因子ω的选择有赖于实际经验。

参考文献:

[1]林成森.数值计算方法:下[M].科学出版社,1997.

[2]李荣华,冯果忱.微分方程数值解法[M].3版.高等教育出版社,1995.