用高斯-赛德尔迭代法解下列线性方程组
- 格式:doc
- 大小:155.31 KB
- 文档页数:4
云南大学数学与统计学实验教学中心
实验报告
课程名称:数值计算方法 学期: 2011—2012学年第一学期 成绩:
指导教师: 学生姓名:
学生学号: 实验名称:用高斯-赛德尔迭代法解下列线性方程组
实验编号:No. 4 实验日期: 2011/11/6 实验学时: 3 学院: 数学与统计学院 专业: 数学与应用数学
年级: 2010级
一、实验目的
加强"追赶法"在解方程组中的应用,掌握多种不同的解线性方程组的解法以及编程的应用
二、实验内容
用高斯-赛德尔迭代法解下列线性方程组,要求当||)()1(k k x x -+||510-≤时迭代终止。
⎥⎥⎥⎥⎥⎥⎥⎥⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---------------62605041
1
141010014001100410010141001014654321x x x x x x 三、实验环境 C 语言,Turboc
四.实验方法
高斯—赛德尔迭代法:在雅可比迭代中,求(1)k x +是时是用()k x 的所有分量来参加计算的,而在计算(1)k x +的第i 个分量(1)k i x +时,已经计算好前面1i -个分量(1)(1,2,,1)k j x j i +=- 。设想方法收敛,第(1)k +次的分量比第()k 次的分量更接近于真实值,为了加速收敛,在计算(1)k x +的第i 个分量时,所用的()k x 的 前1i -个分量换成新算好的值,即用(1)(1)(1)(1)(1)121,,,,,,k k k k k i i n x x x x x +++++- 来计 算(1)k i x +,这就是高斯—赛德尔迭代思想。而在雅可比方法基础上用赛德尔迭代,称为高斯—赛德尔()G S -方法。
(1)任取初始向量(0)(0)(0)(0)12(,,,)T n x x x x = ,由如下公式计算(1)k x +的第
i 个分量:
1(1)
(1)
()
11
,(0,1,),(1,2,,)i n
ij ij k k k i
i
j j
j j i ii ii
ii
a a
b x x x k i n a a a -++==+⎡⎤
=-+==⎢⎥⎢⎦
⎣∑∑
此种迭代法称为高斯—赛德尔()G auss seidel -方法。 (2)高斯—赛德尔()G auss seidel -方法的分量形式:
令1122(,,,)T nn D diay a a a =
21
3110n a L a a
⎡⎢⎢⎢=⎢
⎢⎢⎣ 32
2
00n a a
,1
n n a -
0000⎤⎥⎥⎥⎥⎥⎥⎦
0000U ⎡⎢
⎢
⎢=⎢⎢⎢⎣
12
000a
132300
a a
1230n n
n a a a ⎤
⎥⎥⎥
⎥⎥⎥⎦
则 (1)1(1)(
k k k x D b L x U x +-+⎡⎤=--⎦⎣
11(1)1k k
D b D Lx
D U x
--+
-=--
1
(1)
1
()
1
()k k I D L x D Ux
D b -+--+=-+
(1)
1
1
1
()
1
1
1
()()k k x I D L D Ux I D L D b +------=-+++
(1)1()
1
()()k k x
D L Ux D L b +--=-+++
()
01k G x
f =+
1
1
01(),()G D L U f D L b
--=-+=+
11111()()()I D L D D L D L D -----⎡⎤⎡⎤+=+=+⎣⎦⎢⎥⎣⎦
注:高斯—赛德尔()G auss seidel -方法产生的向量列{}
1
()
k k x ∞
=收敛,
记()lim *k k x x →∞
=,则*Ax b =,即*x 为Ax b =的解。
高斯-赛德尔迭代法;其算法如下: (1)input n,A,b,ε,N (2) []()n i i x ,,3,2,10 =← (3) k ←1
(4) ()()11~5do N k while ≤ (5) err ←0
(6)for i=1 to n ,do ( 7~9) (7)XI ←x[i]
]
,[/)][*],[][(][)8(i i A j x j i A i b i x i
j ∑
≠-
←
(9) if(err<|XI-x[i]|) then err=|XI-x[i]|
(10) If(err<ε)then output(x[i],i=1,2,3...,n),stop (11) k ←k+1
(12) Output("Maximum number of iterations exceeeded."),stop