用高斯-赛德尔迭代法解下列线性方程组

  • 格式:doc
  • 大小:155.31 KB
  • 文档页数:4

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

云南大学数学与统计学实验教学中心

实验报告

课程名称:数值计算方法 学期: 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