迭代法及其在数值求解线性方程组中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
迭代法及其在数值求解线性方程组中的应用
郑州师范学院
毕业论文
题目迭代法及其在数值求解
线性方程组中的应用姓名陈丹丹
学号124103052041
院系数学与统计学院
专业数学与应用数学
年级班级B12数应2班指导教师王明建
2016年 5 月 20 日
毕业论文作者声明
本人郑重声明:所呈交的毕业论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
本人完全了解有关保障、使用毕业论文的规定,同意学校保留并向有关毕业论文管理机构送交论文的复印件和电子版。
同意省级优秀毕业论文评选机构将本毕业论文通过影印、缩印、扫描等方式进行保存、摘编或汇编;同意本论文被编入有关数据库进行检索和查阅。
本毕业论文内容不涉及国家机密。
论文题目:迭代法及其在数值求解线性方程组中的应用
作者单位:郑州师范学院
作者签名:
目录
摘要 (1)
引言 (3)
1.预备知识 (3)
1.1迭代法的基本形式 (4)
1.2Jocabi迭代法 (4)
1.2.1分量形式的Jacobi迭代法 (4)
1.2.2矩阵形式的Jacobi迭代法 (6)
1.2.3Jacobi迭代法的算法实现步骤 (7)
1.3Gauss-Seidel迭代法 (7)
1.3.1分量形式的Gauss-seidel迭代法 (7)
1.3.2矩阵形式的Gauss-seidel迭代法 (7)
1.3.3Gauss-Seidel迭代法的算法实现步骤 (8)
1.4超松弛迭代法(SOR迭代法) (9)
1.4.1分量形式的SOR方法 (9)
1.4.2矩阵形式的SOR方法 (10)
1.4.3SOR迭代法的算法实现步骤 (11)
1.5迭代法的收敛性 (11)
2. 数值求解线性方程组 (12)
2.1用Jacobi迭代法求解 (12)
2.2用Gauss-Seidel迭代法求解 (14)
2.3用超松弛迭代法求解 (15)
小结 (16)
参考文献 (18)
致谢 (20)
迭代法及其在数值求解线性方程组中的应用
摘要:迭代解法就是通过逐次迭代逼近来得到的近似解的方法。
而线性方程组的求解问题是科学研究及工程计算中最常出现的问题,如结构分析、网络分析、数据分析、大地测量等,都需求解线性方程组。
由于从不同的问题而导出的线性方程组的系数矩阵不同,因此对于大型稀疏矩阵(零元素很多的多阶矩阵,一般410>n )所对应的线性代数方程组,用迭代法求解,在某些精度要求比较高的问题中,经常用迭代法求解。
其基本思想为:从某一初始向量
()()()()()002010,,n
x x x X =出发,按照某种迭代规则,不停地对上一次的近似值进行修正,得到近似解的向量(){}k X 。
当近似解()()()()()002010,,n
x x x X =收敛于方程组的精确解向量()
****=n x x x X ,,21时,满足给定精度要求的近似解向量()k X 就可看作是*X 的数值解。
关键词:线性方程组;迭代法;Jacobi 法;Gauss-Seidel 法;逐次超松弛法
Iterative Method and Its Application to Numerical Solution of
Linear Equations
Abstract:Iterative method is the approximate solution obtained by successive iteration. The problem of solving linear equations is the most common problems in scientific research and engineering calculation, such as structural analysis, network analysis, data analysis, geodetic survey, etc., all need solution of linear equations. Due to the different problems of different and the coefficient matrix of the linear equations derived from, so for large sparse matrix corresponding to the system of linear algebraic equations, is solved by iterative method. In certain accuracy requirement is relatively high, often solved by iterative method. The basic idea is as follows: starting from a certain initial vector, according to some kind of iterative rule, the last time approximation is corrected, and the approximate solution is obtained. When the approximate solution converges to the exact solution of the equation, the approximate solution vector which satisfies the given accuracy requirement can be regarded as the numerical solution.
Keywords:linear equations; iterative method; Jacobi method; Gauss-Seidel method; successive over relaxation method
引言
一般情况下,对于中小型方程组,直接法是非常有效并且迅速的,而对于高阶并且系数矩阵稀疏的线性方程组,尤其是大型线性方程组,却遇到了难题。
因为直接法的计算量大,存储量大,连非零元素也要存储。
因而对于大型的线性方程组,常常用迭代法来求解。
迭代法与直接法是有差异的,它不能直接通过有限次的算术运算求出方程的精确解,而是间接的通过迭代来逐步逼近此方程组的精确解。
因此,考虑其收敛性是使用迭代法的关键问题。
迭代法较直接法有明显的优势:程序设计简洁,存储量和计算量少等。
尤为重要的是,迭代法是解决具有大型稀疏矩阵的线性方程组的重要方法之一。
1.预备知识
为了更深入的学习迭代法在数值求解线性方程组中的应用,我们有必要回顾一下迭代法的基本知识。
1.1迭代法的基本形式
设有线性方程组
b Ax =, (1.1.1)
其中A 为非奇异矩阵,向量0≠b ,因此有唯一的解*x 。
下面介绍迭代法的基本格式。
将方程组(1.1.1)变形可得到等价的线性方程组
f Bx x +=, (1.1.2)
任取初值向量()R x ∈0为(1.1.1)的近似解,由公式
()(), ,2,1,0,1=+=+k f Bx x k k (1.1.3)
可构造出向量序列(){}k x ,若(){}
k x 满足下面的式子
()*∞
→=x x k k lim , (1.1.4)
则迭代法收敛,*x 就是方程组(1.1.1)的解,反之,迭代法就发散。
而式子(1.1.3)为迭代格式,B 为迭代矩阵,()k x 为第k 次迭代的近似的解,而
()()k k x x e -=*为第k 次的近似误差。
1.2 Jocabi 迭代法
1.2.1分量形式的Jacobi 迭代法
对线性方程组b Ax =,有分量形式:
,⎪⎪⎩⎪⎪⎨
⎧=+++=+++=+++n
n nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 22112
22221211
1212111 (1.2.1)
(1)设()n j jj ,,2,10a =≠,用其它的1-n 个变元来表示线性方程组的第j 个方程中的第j 个变元j x ,就可得到:
()()(),⎪⎪⎪
⎪⎩
⎪⎪
⎪
⎪⎨⎧
----=----=----=--11,221123*********
13132121111111n n n n n n nn n n n n n x a x a x a b a x x a x a x a b a x x a x a x a b a x (1.2.2) 也既是:
jj n i j i i ji j j a x a b x ⎪⎪
⎪
⎭
⎫
⎝⎛-=∑≠=1(),n j ,,2,1 = (1.2.3)
(2)用迭代格式写出来就是:
()()()()
()
()()()()
()
()()()()
()
,⎪⎪⎪
⎪⎩
⎪⎪⎪
⎪⎨
⎧----=----=----=--+++k n n n k n k n n nn k n k n n k k k k n n k k k x a x a x a b a x x a x a x a b a x x a x a x a b a x 11,22111232312122212
131321********* (1.2.4) 也就是:
()()
jj n i j i k i ji j k j a x a b x ⎪⎪
⎪⎭
⎫
⎝⎛-=∑≠=+11(),n j ,,2,1 = (1.2.5)
(3)任意给定的初值向量()()()()
()T
n x x x x 002
010,,, =代入式(1.2.4)就可逐步算出向量序列(){}() ,2,1=k x k ,且()()()()
()T k n k k k x x x x ,,,2
1 =。
当向量序列(){}
k x 收敛时,对于事先给定的精度要求ε(ε为一个很小的正数),就有()()
,ε<-∞
+k k x x 1也即
是方程组的近似解()1+*≈k x x 。
1.2.2矩阵形式的Jacobi 迭代法
假设线性方程组(1.2.1)的系数矩阵A 为非奇异,并且对于对角线上的元素()n i a ii ,,2,10 =≠,那么就可将矩阵A 分解成
,⎪⎪⎪⎪⎪
⎭
⎫
⎝⎛+⎪⎪⎪⎪⎪⎭⎫ ⎝
⎛+⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=000000211222
112
121
n n nn n n a a a a a a a a a A (1.2.6) 若令,⎪⎪⎪⎪⎪⎭⎫
⎝⎛=00
02
1
21
n n a a a L ,⎪⎪⎪⎪⎪⎭⎫ ⎝
⎛=nn a a a D 22
11,⎪⎪
⎪⎪⎪
⎭
⎫ ⎝⎛=0002112
n n a a a U 则有 U D L A ++=,
即 b Ax =可替换为 ()b x U D L =++, 变形为:()b x D L Dx ++-=, 因为 ()n i a ii ,,2,10 =≠, 那么 ()b D x U L D x 11--++-=, 得到迭代公式如下:
()()()b D x U L D x k k 111--+++-=, (1.2.7)
若令 ()U L D G +-=-1;b D h 1-=, 就有 ()()h Gx x k k +=+1,
那么就称公式(1.2.7)矩阵形式的Jacobi 迭代格式,称G 为Jacobi 迭代矩阵。
以上为Jacobi 迭代格式的两种不同形式,在讨论收敛性的时候,主要用Jacobi 迭代格式的矩阵形式,而在实际的应用计算中,则需要用到Jacobi 迭代格式的分量形式。
1.2.3 Jacobi 迭代法的算法实现步骤
步1.输入必要的初始数据n ,()n i j a ji ,,2,1, ==,()n j b j ,,2,1 =,
()
()n j x j
,,2,10 =,ε及M (迭代的最大次数)
步2.对M k ,,2,1 =做到步5
其过程为:步3.对n i ,,2,1 =做()
,jj n j i i i ji j j a x a b x ⎪⎪
⎪⎭
⎫
⎝⎛-⇐∑≠=10
步4.若()ε<-0x x ,则输出n x x x ,,,21 停机。
否则 步5.对n j ,,2,1 =做 ()
,
j j
x x ⇐0 步6.输出“超出最大迭代次数”,停机。
1.3 Gauss-Seidel 迭代法
1.3.1分量形式的Gauss-seidel 迭代法
对于公式(1.2.5),可将公式右端前1-j 个分量的上标由()k 换成()1+k ,可得到分量形式的Gauss-seidel 迭代法。
()
()()jj j i n j i k i ji k i ji j k j
a x a x a
b x ⎪⎪⎭
⎫ ⎝⎛--=∑∑-=+=++11111,
2,1,0;,,2,1==k n j (1.3.1) 1.3.2矩阵形式的Gauss-seidel 迭代法
对方程组 b Ax =,由前文知 U D L A ++=。
由于 0≠=++A U D L ,
因此 b Ax =等价于 ()b x U D L =++, 解得 b Ux Lx Dx +-=+, 所以
()()(),b Ux Lx Dx k k k +-=+++11 (1.3.2)
可得到迭代格式
()()()(),
b L D Ux L D x k k 1
1
1--++++-= (1.3.3) 若令 ()U L D B 1
-+-=,()b L D f 1
-+=,
那么
()(),
f Bx x k k +=+1 (1.3.4) 公式(1.3.4)就是矩阵形式的Gauss-Seidel 迭代格式,B 是Gauss-Seidel 迭代矩阵。
1.3.3 Gauss-Seidel 迭代法的算法实现步骤
步1.输入必要的初始数据n ,()n i j a ji ,,2,1, ==,()n j b j ,,2,1 =,
()()n j x j ,,2,10 =,ε及M (迭代的最大次数)
步2.对M k ,,2,1 =,做到步4 其过程为:步3.对n j ,,2,1 =做
()()jj j i n j i i ji i ji j j a x a x a b t ⎪⎪⎭
⎫ ⎝⎛--⇐∑∑-=+=11100,
()0max j j x t Error -=,
(),
j j t x ⇐0 步4.若ε<Error ,则输出()()()
00201,,,n
x x x ,停机。
步5.输出“超出最大迭代次数”,停机。
1.4超松弛迭代法(SOR 迭代法)
对于解线性方程组,一般来说,Jacobi 迭代法的收敛速度缓慢,在实际的生活中很少运用。
Gauss-Seidel 迭代法虽说比Jacobi 迭代法收敛的速度稍快,但收敛的速度也不是说特别明显,因此就需要对其修改,提高收敛的速度。
而逐次超松弛迭代法(又称SOR 方法)就是对修改后的迭代法的一种加速。
它的计算公式简洁,但为了使其在迭代的过程中保持较快的迭代速度,选择合适的松弛因子是关键。
1.4.1分量形式的SOR 方法
设线性方程组b Ax =,其中系数矩阵A 为非奇异的,
()T n x x x x ,,,21 =,()T
n b b b b ,,,21 =,第k 步迭代近似值记为()k x ,那么
()(),k k Ax b r -=+1 (1.4.1)
表示近似解()k x 的残余误差,则有加速迭代格式
()()()()
,
k k k Ax b x x -+=+ω1 (1.4.2) ω就称作松弛因子。
若用分量形式的Jacobi 迭代格式就是:
()
()
(),
n j x a b x x n i k i ji j k j
k j ,,2,1,11 =⎪⎭
⎫
⎝⎛-+=∑=+ω (1.4.3) 当选择恰当的松弛因子,就可获得期望的较快的收敛速度。
而在计算()1+k j x 时,若用前面的Gauss-Seidel 迭代思想,利用已经计算出来的分量
()()()
111211,,,+-++k j k k x x x ,那么就得到一个全新的迭代格式:
()
()
()(),,n j x a x a b x x j i n j i k i ji k i
ji j k j
k j
,,2,11111 =⎪⎪⎭
⎫ ⎝⎛--+=∑∑-==++ω (1.4.4) 当然,当 ()n j a jj ,,2,10 =≠时,将迭代格式(1.4.4)应用到方程组,可得到 ,
n j a b x a a jj
j i n
i jj
ji ,,2,1,1 ==
∑
= 由此可推出下列松弛迭代格式:
()
()
()
(),
n j x a x a b a x x j i n
j i k i ji k i
ji j jj k j k j ,,2,1,1
111 =⎪⎪
⎭
⎫
⎝
⎛--+
=∑∑-==++ω (1.4.5) 容易发现,当ω的取值为1时,式(1.4.5)是Gauss-Seidel 迭代格式。
为保证迭代过程的收敛,就必须使20<<ω,当10<<ω时称低松弛法,当21<<ω时称超松弛法。
1.4.2矩阵形式的SOR 方法
对方程组 b Ax =,仍由前文知 U D L A ++= 对任意实数 0≠ω,线性方程组就等价于
(),
b Ux x L D ωωω+=- (1.4.6) 同样,线性方程组也等价于
()()[],
b x U D x L D ωωωω++-=-1 (1.4.7) 假设 0≠jj a ,可得出 ()()0det det 1
≠==-∏=n
j jj a D L D ω
也即是 L D ω-是非奇异的。
令 ()
()[](),
b L D f U D L D G 1
1
,1---=+--=ωωωωωω
得到矩阵形式的SOR 迭代格式:
()(),
,1,0,1=+=+k f x G x k k ω (1.4.8) 同样,矩阵ωG 就是矩阵形式的SOR 迭代法的迭代矩阵,ω称为松弛因子。
1.4.3 SOR 迭代法的算法实现步骤
步1.输入必要的初始数据n ,ω,()n i j a ji ,,2,1, =,()n j b j ,,2,1 =,
()()n j x j ,,2,10 =,ε及M (迭代的最大次数)
步2.对M k ,,2,1 =做到步4 其过程为:步3.对n j ,,2,1 =做
()01
1
1i j i ji x a s ∑-=⇐,
()01
2i
n
j i ji x a
s ∑+=⇐
,
()jj j j a s s b x 21--⇐∆ω, ()()()j j j x x x ∆+-⇐001ω, j x Error ∆=max ,
步4.若ε<Error ,则输出()()()
()T
n x x x x 002
01,,, =,停机。
步5.输出“超出最大迭代次数”,停机。
1.5迭代法的收敛性
定理1.对任意的初始向量()n R x ∈0和任意的n R f ∈,设矩阵B 为迭代矩阵,
则()1<B ρ是迭代法收敛的充分必要条件。
定义1.对于矩阵A ,若,n i aij aii n
i j j ,,2,1,1
=>∑≠=
即主对角线上元素的绝对值大于同行其他元素的绝对值之和,则称矩阵A 是对角占优矩阵。
定理2.如果线性方程组b Ax =的系数矩阵A 是对角占优矩阵,则线性方程组b Ax =的Jacobi 迭代格式和Gauss-Seidel 迭代格式都是收敛的。
定理3.若()
n n ij R a A ⨯∈=是对称正定矩阵,则解方程组b Ax =的Gauss-Seidel 迭代法收敛。
定理4.若解方程组b Ax =的SOR 法收敛,则20<<ω。
定理5.若()
n n ij R a A ⨯∈=是对称正定矩阵,且有20<<ω,则解方程组b Ax =的SOR 法收敛。
2.数值求解线性方程组
在此给出几个例子从而更清晰的理解用迭代法来求解线性方程组。
2.1用Jacobi 迭代法求解
例1.解线性方程组
,
⎪⎩
⎪
⎨⎧=+--=-+-=--10
53132102
210321321321x x x x x x x x x 解:对方程进行变形,分离出变量1x ,2x ,3x :
,
⎪⎩⎪
⎨⎧++=++=++=2
2.06.0
3.12.01.02.02.01.0213
312321x x x x x x x x x
对应的迭代格式为:
()()()
()()()
()()(),
⎪⎩⎪⎨⎧++=++=++=+++22.06.03.12.01.02.02.01.02113
31123211k k k k k k k k k x x x x x x x x x 取迭代初值为()()T
x 0,0,00=,迭代的结果如下表1所示。
可得到方程组的精
确解为11=*x ,22=*x ,33=*
x 。
表1 Jacobi 迭代格式的数值结果
迭代解为9999.01=x ,9999.12=x ,9999.23=x
2.2用Gauss-Seidel 迭代法求解
例2.用Gauss-Seidel 迭代格式求解例1,即求解下列方程组。
,
⎪⎩
⎪
⎨⎧=+--=-+-=--10
53132102210321321321x x x x x x x x x 解:对方程组进行变形,分离出变量:32,1,x x x
,
⎪⎩⎪
⎨⎧++=++=++=213
3123
212.06.022.01.03.12.01.02.0x
x x x x x x x x 由迭代格式(1.3.1),可得到
()()()
()()()
()()(),
⎪⎩
⎪⎨⎧++=++=++=++++++1211133111232112.06.022.01.03.12.01.02.0k k k k k k k k k x x x x x x x x x 方程组的精确解()T
x 321,,=*,迭代的初始向量选为()()T
x 0,0,00=。
迭代的结
果如下表2所示。
表2 Gauss-Seidel 迭代格式的数值结果
由本例可比较出,Gauss-Seidel 迭代法比Jacobi 迭代法收敛速度快。
当初始向量相同,近似解达到同样精度的时候(取0005.0=ε),Gauss-Seidel 迭代法仅需要6次迭代就满足要求,而Jacobi 迭代法则要迭代9次才能够满足此要求。
2.3用超松弛迭代法求解
例3[1].用SOR 法求解方程组
,
⎪⎩⎪
⎨⎧-=+-=-+=+12
4204316
3432
32121x x x x x x x 松弛因子取值为24.1=ω,要求0005.0=ε。
解:由题意知,方程组的系数矩阵为正定矩阵,所以用SOR 法求解此方程组一定是收敛的。
可求出迭代公式为:
()()()()
()
()()()()()
()
()()()()(
)
,
⎪⎪⎪
⎩
⎪⎪⎪⎨⎧-+-+=+--+=--+=+++k k k k k k k k k k k k k x x x x x x x x x x x x x 32313
32121221111
41244320434164
ωωω 迭代的初始向量选为()()T
x 0,0,00=,迭代的结果如下表3所示。
表3 SOR 迭代格式的数值结果
小结
迭代法是一种通过逐次逼近来求解方程组精确解的方法,它的优点是:程序算法简单、占用的内存小,有利于在计算机上实现,因此它适用于求解大型稀疏线性方程组。
常用的迭代法有:Jacobi迭代法、Gauss-Seidel迭代法及超松弛迭代法(SOR迭代法)。
Jacobi迭代法简单,有很好的并行性,适用于并行计算,但收敛的速度较慢;Gauss-Seidel迭代法是典型的串行算法,当Jacobi迭代法与Gauss-Seidel迭代法同时收敛的时候,后者比前者收敛速度要快,但这两种迭代法互不包含,不能够互相代替。
而在实际应用中较多的是超松弛迭代法,且Gauss-Seidel迭代法是超松弛迭代法的特例,超松弛迭代法实际上就是Gauss-Seidel迭代法的一种加速,然而选取最佳松弛因子是不太容易的,在本论文中没有详细的展开。
对于迭代法来说,迭代法的收敛性和收敛速是使用的关键,并且判别收敛的充分条件应该掌握好,同时不收敛的迭代公式在迭代法中是毫无意义的。
有些时候对线性方程组做一些简单的同解的变形[8]后,再次构造迭代公式就可以起到意想不到的结果。
本论文中针对典型的系数矩阵是对角占优矩阵和对称正定矩阵线性方程组展开讨论,非线性方程组的迭代法不在本文的讨论范围内。
此外,对于解线性方程组的迭代法,还有SSOR迭代法、USSOR迭代法、TOR迭代法[11]、子空间迭代法、递归迭代法、滤频迭代法、主元加权迭代法[10]和分裂迭代法[9]等。
迭代法中还有有不少的问题都有待人们深入的研究。
参考文献
[1]贺俐,陈桂兴.计算方法[M].武汉.武汉大学出版社,1998;
[2]陈晓江,黄樟灿.数值分析[M].北京.科学出版社,2010;
[3]吕同福,康兆敏,方秀男.数值计算方法[M].北京.清华大学出版社,2008;
[4]孙文瑜,杜其奎,陈金如.计算方法[M].北京.科学出版社,2007;
[5]吴勃英,高广宏.数值分析学习指导[M].北京.高等教育出版社,2007;
[6]王志军,王海红,孟红玲.数值计算[M].郑州.河南大学出版社,2012;
[7]杨泮池.计算方法重点内容重点题[M].西安.西安交通大学出版社,2005;
[8]程晓亮,刘影.初等数学研究[M].北京.北京大学出版社,2011;
[9]温瑞萍,李苏丹,任孚鲛.求解复对称线性方程组的新分裂迭代方法及预处理子(英文)[J].应用数学,2016(1):173-182.
[10]唐丽,李鹏飞.主元加权迭代法求解病态线性方程组[J].科学技术与工程,2012,12(2):381-383.
[11]张喆.用六种迭代法求超定线性方程组b
Ax
的最小二乘解[J].科学与财富,2011(5):
322-323.
致谢
从确定论文选题至今,我的本科毕业论文已经顺利的完成了。
在此,我要特别感谢我的论文指导老师——郑州师范学院数学与统计学院王明健老师。
从开始的选定论文题目到搜集资料,从确定论文大体的框架到进行开题报告,从修改初稿二稿直到最终的定稿,老师给了我特别悉心的指导。
老师是一位十分认真严谨的老师,对我
的论文要求十分严格,不论是内容格式,还是标点符号都进行了严格的把关。
可以说,老师对我的论文指导尽职尽责、呕心沥血。
这才使得我的论文能够如期、保质保量地完成。
在写毕业论文的这段日子里,老师严谨的治学态度、渊博的知识结构、精益求精的工作作风以及诲人不倦的高尚师德给我留下了深刻的印象,并将使我受益终身。
在此,还要感谢我身边的朋友和同学,感谢他们在论文写作过程中对我的指导、帮助和支持,感谢他们的宝贵建议,感谢所有关心、支持、帮助过我的良师益友。
最后,向在百忙中抽出时间对本文进行评审并且提出宝贵意见的各位老师表示衷心的感谢!。