开篇:润墨网以专业的文秘视角,为您筛选了一篇一种椭圆形方程的差分格式及迭代法求解范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:有限差分法是解偏微分方程的一个重要数值方法。对正方形域上的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.