数值计算方法课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆邮电大学
数学与应用数学 专业
《数值计算方法》课程设计
姓名: 李金徽 王莹 刘姝楠
班级: 1131001 1131002 1131002 学号: 2010213542 2010213570 2010213571
设计时间:
2012-6-4
指导教师:
朱伟
一、课程设计目的
在科学计算与工程设计中,我们常会遇到求解线性方程组的问题,对于系数矩阵为低阶稠密矩阵的线性方程组,可以用直接法进行消元,而对于系数矩阵为大型稀疏矩阵的情况,直接法就显得比较繁琐,而迭代法比较适用。比较常用的迭代法有Jacobi 迭代与Gauss - seidel 迭代。本文基于两种方法设计算法,并比较他们的优劣。
二、课程设计内容
给出Jacobi 迭代法和Gauss-Seidel 迭代法求解线性方程组的算法思想和MATLAB 程序实现,并对比分析这两种算法的优劣。
三、问题的分析(含涉及的理论知识、算法等)
Jacobi 迭代法
方程组迭代法的基本思想和求根的迭代法思想类似,即对于线性
方程组Ax = b( 其中n
n n R b R R A ∈⨯∈,),即方程组
)1(2211222221211
1212111⎪⎪
⎩⎪⎪⎨
⎧=+⋯++⋯⋯=+⋯++=+⋯++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
将系数矩阵A 写为
)2(000000
21122
12122
11U
L D a a a a a a a a a A n n n n nn --≡⎪⎪⎪
⎪⎪
⎭
⎫ ⎝⎛----
⎪⎪⎪⎪⎪⎭⎫
⎝⎛----⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=
若选取D M =,则U L A M N +=-=,方程组)1(转化为等价方程组
b x U L Dx ++=)(
迭代公式:
于是,得可逆,所以因为Jacobi b D x U L D x D n i a ii .)(),,,1(011--++==≠
)
3()()()1()
0(⎪⎩
⎪⎨⎧+=+f x B x x k J k 初始向量
迭代公式的分量形式:
。
)(其中,迭代矩阵Jacobi b D f U L D B J 11
-,-=+=
)可写为次近似,则式(为第引进记号:3),,,()()(2)(1)(k x x x x T
k n k k k =
∑≠=+-=n
i
j j k j ij i k i
ii x a b x
a 1)
()
1(
或
)
4(),2,1,0;,2,1(,),,,(1
)()1()0()0(2)0(1)0(⎪⎪⎩
⎪⎪⎨
⎧==-==∑≠=+ k n i a x a b x x x x x ii n
i j j k j ij i k i
T
n ,
为其精度||||)()1(k k x x -+。
Gauss-Seidel 迭代法
的等价方程组为
方程组下三角矩阵),于是若取)1(.(U A M N D L M =-=-=
b
Ux x L D +=-)(
赛德尔迭代公式:于是,得到高斯-
)
(初始向量)5()()1()
0(⎪⎩
⎪⎨⎧+=+f x B x x k G k
阵。赛德尔迭代法的迭代矩为解方程组的高斯称。
其中,-)(,)(11G G B b L D f U L D B ---=-=
)可写成
公式(记5,)()(2)(1),,,()
(x x x x
k n k k T
k =
b
U
x L D x
k k +=-+)
()1()(
b x
a x a x
a i
k j
n
i j ii
k j
i j ii k i
ii
+-
-=∑∑+=+-=+)(1
)
1(1
1
)1(
⎪⎪⎪⎪
⎩⎪⎪
⎪⎪⎨⎧==--=
=∑∑+=+-=+),2,1,0;,2,1(),,,(1)
()1(11)1()0()0(2)0(1)0( k n i x x a b x x x x x ii n i j k j k j i j ii i k i T
n
,或
算法步骤: Jacobi 步骤
第一步:输入A ,b,x0,e 的初始值
第二步:求出b 的长度,和A 的大小;判断输入变量的个数,使x 与x0之间产生差值,设定x x x x k k ==+,0)1(,给定k 的初始值; 第三步:求出上下三角矩阵进而求出对角矩阵的逆;
第四步:求出谱半径,当谱半径小于一时,用while 循环,当满足
e x x k k >-∞+||||)1(时,
k=k+1;),2,1,0;,,2,1(,1)
()1( ==-=
∑≠=+k n i a x a b x
ii
n
i
j j k j ij i k i
。
若谱半径不小于一,则迭代法发散。 Gauss-Seidel 步骤:
第一步:输入A ,b,x0,e 的初始值
第二步:求出b 的长度,和A 的大小;判断输入变量的个数,使x 与x0之间产生差值,设定x x x x k k ==+,0)1(,给定k 的初始值;