- 1
- 0
- 约2.85千字
- 约 11页
- 2017-10-06 发布于重庆
- 举报
数值分析 第四章 基于MATLAB的科学计算—解线性方程组的迭代法
科学计算—理论、方法
及其基于MATLAB的程序实现与分析
三、 解线性方程组的迭代法(Iteration)
线性方程组的理论求解公式
(1)
在应用于实际问题的计算时,通常面临两方面的问题
1、计算过程复杂,
2、不能保证算法的稳定性;
此外,当初始数据(可能)存在误差时,按公式(1)即使求出了“精确解”意义也不大,因此,对于存在初始数据误差、特别是大型的线性方程组求解,需要寻求能达到精度要求的、操作和计算过程相对简单的求解方法。下面将要介绍的迭代法就属于这类方法。
迭代法求解线性方程组的基本思想是
不追求“一下子”得到方程组的解,而是在逐步逼近方程组的精确解的迭代过程中获得满足精度要求的近似解,这一点与直接法不同;
通过对问题的转化,避免(困难的)矩阵求逆运算。
用迭代法求解线性方程组,首先要把线性方程组写成等价的形式
(2)
式(2)的右端称为迭代格式,由迭代格式(2)确定如下的迭代算法:
(3)
对于给定的线性方程组,可以写成不同的(无穷多)迭代格式,有意义的(可用的)迭代格式应具有收敛性―生成的解向量序列收敛于方程组的解;而好的迭代法应具有较高的收敛速度。
关于迭代法收敛性的两个判别条件:
a、充分必要条件是:矩阵的谱半径
b、充分条件是:矩阵的某个算子 范数。
设是方程组(2)的解,是迭代法(3)生成的任一序列,因为
,
所以
(4)
设,其中矩阵是矩阵的Jordan标准型,那么容易验证,并且
(5)
此外,因为
(6)
所以
(7)
注:迭代格式(2)所确定的迭代法收敛与否,完全由系数矩阵决定,而与常数项无关.
常用的迭代法
1、Jacobian 迭代法:
(8)
例1 解下面方程组(精确解为).
解 1) 改写成等价形式
2) 构造迭代公式,即为雅可比迭代公式
3) 取初始向量,即代入上式,求出
.
再代回公式中,求出
,
,
.
依次迭代,计算结果如表4-1.
表4-1 雅可比方法的数值结果
0
1
2
3 0
1.4
1.11
0.929 0
0.5
1.20
1.055 0
1.4
1.11
0.929 4
5
6
7 0.9906
1.01159
1.000251
0.99824 0.9645
0.9953
1.005795
1.000126 0.9906
1.01159
1.000251
0.99824
Example intera_j.m
itera_j
2、Gauss-Seidel 迭代法:
(9)
根据GS迭代法(9),可进一步得到
(10)
即
(11)
式(11)表明:Gauss-Seidel 迭代法在计算第个迭代值时,及时地利用了在此步迭代中得到的新的迭代值:,,由于第步的迭代值通常比第步的迭代值更接近方程组的精确解,所以,在Jacobian迭代法和Gauss-Seidel迭代法都收敛的情况下,Gauss-Seidel迭代法的收敛速度比Jacobian迭代法的收敛速度快。
例2 解下面方程组(与例1相同,精确解为).
解 1) 原方程组改为等价方程组
.
2) 构造迭代公式,即为高斯-赛德尔迭代公式
.
3) 取初始向量,即代入上式,求出
,
,
.
迭代计算下去,得表4-2.
表4-2 G-S方法的数值结果
0
1
2 0
1.4
1.0634 0
0.78
1.02048 0
1.026
0.987516
3
4
0.995104
1.00123
0.995275
1.00082
1.0019
0.99963
Example itera_gs.m
itera_gs
对Gauss-Seidel迭代法做进一步的研究,式(9)还可以写成如下的形式:
(12)
即Gauss-Seidel迭代法是在Jacobian迭代法的基础上增加了一个修正项:
并且这个修正项起到了加速的作用,受这一事实的启发,为获得更快的收敛速度,我们对Gauss-Seidel迭代法再做进一步的研究
(13)
式(13)表明Gauss-Seidel迭代法的第步迭代值是在第步迭代值的基础上增加了一个修正项:
(14)
并且这个修正项使第步迭代值更接近方程组的精确解,受这一事实的启发,我们希望通过用一个适当的因子乘修正项(14)的办法达到获得更快收敛速度的目的:
(15)
从而得到
原创力文档

文档评论(0)