用高斯-赛德尔迭代法解下列线性方程组
云南大学数学与统计学实验教学中心
实验报告
课程名称:数值计算方法 学期: 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
五、实验过程
1实验步骤
(1)编程: 根据所用算法及选用语言编出源程序
(2). 开机, 打开所用语言系统输入所编源程序.
(3). 调试程序, 修改错误直至能正确运行.
(4). 运行程序并输出计算结果.
2 关键代码及其解释
3 调试过程
根据所给题目的基本信息和C语言,编写出源程序,程序编号后,出现了很多的语法错误,再对所出现的错误进行改正,直至编译,连接后显示无错误。
运行结果:
x[0]=0.999997
x[1]=1.999997
x[2]=0.999999
x[3]=1.999998
x[4]=0.999998
x[5]=1.999999
六、实验总结
1.遇到的问题及解决过程
2.产生的错误及原因分析
(1)Floating point error: Domain. 原因分析:编写程序时出现了语法错误
(2)编写程序时没去分大小写,造成多处语法错误;原因分析:都怪自己粗心马虎3.体会和收获。
无论干什么事都要认真,踏实!努力做好自己该做的。
上课要认真听讲,专心学习,做作业才省力!
各门课程之间相互联系,应搞好各科的学习。
七:程序源代码:
#include "stdio.h "
#include "math.h "
#include "alloc.h "
GaussSeidel(n,a,b,x)
int n;
double *a,*b,*x;
{
int i,j;
double t,u,m=0,eps;
while(1)
{
eps=0;
for(i=0;i <n;i++)
{
t=x[i];
for(j=0;j <n;j++)
if(j!=i)
m+=a[i*n+j]*x[j];
x[i]=(b[i]-m)/a[i*n+i]; //G-S迭代公式
m=0;
u=x[i];
if(fabs(t-u)> eps)
eps=fabs(t-u);
}
if(eps <1e-5) return 1; //满足题目所要求的循环条件
}
}
main()
{
int i;
double
a[6][6]={{4,-1,0,-1,0,0},{-1,4,-1,0,-1,0},{0,-1,4,0,0,-1},{-1,0,0,4,-1,0},{0,-1 ,0,-1,4,-1},{0,0,-1,0,-1,4}},b[6]={0,5,0,6,-2,6},x[6]={0,0,0,0,0,0}; //输入具体矩阵的值
GaussSeidel(6,a,b,x);
for(i=0;i<6;i++)
printf("x[%d]=%f\n",i,x[i]);
}
八.教师评语:。
高斯赛德尔法
的系数矩阵A可逆且主对角元素都不为零,令
)
并将A分解成
A = (A D) + D
Dx = (D A)x + b 从而方程可以写成 x = B1 x + f1 令 B = I D A, f = D b 其中
1 1 1 1
以 B 为迭代矩阵的迭代法 称为雅克比迭代法。
1
x ( k +1) = B1 x ( k ) + f1
(k ) 由雅可比迭代公式可知,在迭代的每一步计算过程中是用x 的全部分量 ( k +1 ) ( k+1) x i 时,已经算出最新的 来计算 x 的 所有分量 , 显然在计算第i个分量 分量,但没被利用。因此,将最新算出来的第k+1次近似加以利用,就 得到了高斯赛德尔迭代法。 A = D L U 将矩阵A分解成 其中 D = diag ( a11 ,a 22 ,..., a nn ) , L ,U 是A的主对角除外的下三角 和上三角部分,于是有 (D L )x = Ux + b
ρ 是迭代矩阵的谱半径(B0中绝对值最大的特征值的绝对值)
首先取 α =1.5,迭代若干次后,有 式中: 为第k 次迭代的节点电压与该节 点前次迭代值的差值的绝对值 U ( m ) U ( m 1) 为所有节点中差值绝对值最大的 ∞ Bso为加速迭代矩阵 再有
U ( m ) U ( m 1)
将上式带入最佳加速因子公式得到近似最佳加 速因子 α 。
x = B2 x + f 2 即 B = (D L ) U , f = (D L ) 其中 以 B2 为迭代矩阵的迭代法 x ( k +1) = B2 x ( k ) + f 2 称为高斯-赛德尔迭代法。
《数值分析》-雅格比法与高斯-赛德尔迭代法解线性方程组
4. 线性方程组求解4.用雅格比法与高斯-赛德尔迭代法解下列方程组Ax =b ,研究其收敛性,上机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。
(1)A 行分别为A 1=[6,2,-1],A 2=[1,4,-2],A 3=[-3,1,4]; b 1=[-3,2,4]T , b 2=[100,-200,345]T ,(2) A 行分别为A 1=[1,0.8,0.8],A 2=[0.8,1,0.8],A 3=[0.8,0.8,1];b 1=[3,2,1] T , b 2=[5,0,-10]T ,(3)A 行分别为A 1=[1,3],A 2=[-7,1];b =[4,6]T , (1)雅可比法A 为所求方程组的系数矩阵,将系数矩阵()n n ij A a R ⨯=∈分为三部分,即111212221211000000n n nn n n a a a a a a A a a a --⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪-- ⎪ ⎪ ⎪=-- ⎪ ⎪ ⎪ ⎪⎪ ⎪--⎝⎭⎝⎭⎝⎭D L U ≡--构造迭代方程,选取M 为A 的对角元素部分,即选取M D =,A D N =-,由此构造得到解AX b =的雅可比迭代法如下:()()()01,,0,1,,k k x xBx f k +⎧⎨=+=⎩ 初始向量(4-1)其中()111B I D A D L U J f D b ---=-=+≡=,,J 为雅可比迭代矩阵。
若A 为n 阶矩阵,迭代公式如下:()()()()()()()00001211,,,()/1,2,,;0,1,T n n k k ii ij j ii j j ix x x x x b a x a i n k +=≠⎧=⎪⎪⎪=-⎨⎪⎪==⎪⎩∑初始向量表示迭代次数(4-2) 在运行程序时首先需要手动输入矩阵A ,阶数n 、向量b 和初始向量x 0,根据式(4-2)不断迭代可求解得近似解。
MATLAB Gauss-Seidel法解线性代数方程组
Gauss-Seidel 法解线性代数方程组Gauss-Seidel 法解线性代数方程组算法:Step 1取初始点)0(x ,精度要求epsStep 2若ε>-∞+)()1(k k x x 转到Step 3 否则转到Step 4Step 3用下式计算:()()b L D Ux L D x k k 1)(1)1(--++++-=转到Step 2 Step 4停止计算()1(+k x 作为线性方程组的解) Step 5 )22(643211k k k k h y y n n ++++=+Gauss-Seidel 法解线性代数方程组程序:function GS(A,b,x,eps)%A----线性方程组系数矩阵%b----线性方程组的解(列向量)%x----初始迭代点%D----A 对角阵%e----取误差(计算范数)D=diag(diag(A));L=tril(A,-1);%取下三角阵U=triu(A,1);%取上三角阵e=inf;X=x;s=0;while e>=epsx=inv(D+L)*U*x+inv(D+L)*b;e=norm(x-X);X=x;s=s+1;endif s<100xelsedisp('超过最大迭代次数')disp('迭代到100次的结果为')xend例:用Gauss-Seidel 迭代法解下列线性方程组⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-1166122111221321x x x 输入:clear allclcA=[1 2 -2;1 1 1;2 2 1];b=[6;6;11];x=[0;0;0];ep=1e-3;GS(A,b,x,ep)得到:超过最大迭代次数迭代到100次的结果为x =1.0e+308 *-1.78011.7807-0.0012指导教师: 年 月 日。
雅可比迭代法和高斯-塞德尔迭代法求解线性方程组
实验报告内容一 实验目的与要求(实验题目)1.分别利用雅可比迭代法和高斯-塞德尔迭代法求解以下线性方程组使得误差不超过 2.用不动点迭代法求方程的实根:02010223=-++x x x二 模型建立(相关主要计算公式)1. 雅可比迭代法⎩⎨⎧[],...,,k ,n ,...,i x a b a x n i j j )k (j j i i ii )k (i 21021111==∑-=≠=+ 其中()()()()()T n x ,...x ,x x 002010=为初始向量.2.高斯-塞德尔迭代法⎩⎨⎧[],...,,k ,n ,,i x a x a b a x i j n i j )k (j ij )k (j ij i ii )k (i 21021111111==∑∑--=-=+=++3.不动点迭代法• ...1,0),(1==+k x xk k ϕ三、 实验过程、步骤(程序)1. 雅可比迭代法#include "stdio.h"#include "math.h"#include "string.h"main(){⎪⎩⎪⎨⎧=++=-+=+-3612363311420238321321321x x x x x x x x x 410-int i,j,k;float m1=0.0,m2=0.0;float a[3][4]={8,-3,2,20,4,11,-1,33,6,3,12,36};float x[3]={0.0,0.0,0.0};for(k=1;k<=10;){for(i=0;i<=2;i++){for(j=0;j<i;j++)m1=m1+a[i][j]*x[j];for(j=i+1;j<=2;j++)m2=m2+a[i][j]*x[j];x[i]=(a[i][3]-m1-m2)/a[i][i];m1=0,m2=0;}k++;}printf("雅可比迭代法计算结果为:\n");for(i=0;i<=2;i++)printf("x[%2d]=%8.9f\n",i+1,x[i]);}2高斯-塞德尔迭代法#include<stdio.h>#include<math.h># define n 3void main(){int i,j,k=1;float x[n]={0,0,0},m[n]={0,0,0},s=1;float a[n][n]={8,-3,2,4,11,-1,6,3,12},d[n]={20,33,36}; printf("高斯-塞德尔迭代法运算结果为:\n");for(k=0;fabs(s-x[0])>1e-6;k++){s=x[0];for(i=0;i<n;i++){m[i]=0;for(j=0;j<n;j++) m[i]=m[i]-a[i][j]*x[j];m[i]=m[i]+d[i]+a[i][i]*x[i];x[i]=m[i]/a[i][i];}printf("Y1=%f Y2=%f Y3=%f\n",x[0],x[1],x[2]); }getchar() ;}3.#include <stdio.h>#include <math.h>double f( double x ){return x * x * x + 2 * x * x + 10 * x - 20;}double fdx( double x ){return 3 * x * x + 18.4 * x + 16.7;}int main( ){int t1 = 0, t2 = 1;double x[ 2 ], ep = 1e-8;x[ 0 ] = 0;do{t1 = 1 - t1;t2 = 1 - t2;x[ t1 ] = x[ t2 ] - f( x[ t2 ] ) / fdx( x[ t2 ] );}while( fabs( x[ t1 ] - x[ t2 ] ) > ep );printf("解得x=%lf\n", x[ t1 ]);return 0;}四.实验结果:1.雅可比迭代法:2.高斯-塞德尔迭代法:.3.不动点迭代法:五.实验小结通过这次上机,学会了用Jacobis迭代法,高斯-塞德尔迭代法求解线性方程组,算法程序比较复杂,特别是要多次使用数组条件及for循环语句。
Gauss-Seidel迭代法求解方程组
Gauss-Seidel 迭代法求解方程组设方程组Ax=b 中的A 是n n ⨯阶矩阵,x 和b 都是n 维列向量。
若系数矩阵A 为非奇异的且0,1,2,ii a i n ≠= ,将A 分解为:A=D+L+U其中1122(,,,)nn D diag a a a =21120000000n n a L a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦ , 1212000000n n a a a U ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦将方程组1,1,2,,nij ji j a xb i n ===∑分析雅克比方法的迭代过程我们发现,在计算(1)k i x +时,虽然(1)(1)(1)121,,k k k i x x x +++- 已经全部计算出来,但是(1)k i x +计算还是用()()()121,,k k k i x x x - 而未用(1)(1,2,,1)k j x j i +=- 有理由认为(1)k jx +比()k jx 个接近精确值的相应分量,因此我们计算(1)k i x +时,用(1)k jx +代替()(1,2,,1)k j x j i =- ,即1(1)(1)()111(),1,2,,i nk k k ii ij j ij j j j i ii x b a x a x i n a -++==+=--=∑∑ 简记为:(1)()k k x Bx f +=+其中 B =- (D +L)1-U, f= (D +L)1-b我们称()x Bx f ϕ=+为迭代函数,任取初始向量(0)x x =,按照(1)()k k xBx f +=+即1(1)(1)()111(),1,2,,i nk k k ii ij j ij j j j i ii x b a x a x i n a -++==+=--=∑∑ 形式,称这种迭代方法为 Gauss -Seidel 迭代法。
Gauss -Seidel 迭代法算法简单描述:(0)(0)(0)(0)12(,,,),T n x x x x = ( 向量初始)For 0,1,2,k =For 1,2,,k n =1(1)(1)()111(),1,2,,i nk k k ii ij j ij j j j i ii x b a x a x i n a -++==+=--=∑∑ 如果()(1)k k x xε--≤ 停止,否则Next k 用Gauss -Seidel 迭代法求解方程组实例为:1231212978798x x x x x x x --=⎧⎪-+=⎨⎪-+=⎩,的解,初始向量(0)(0,0,0),T x = 解 由公式知,Gauss -Seidel 迭代法为:(1)()()123(1)(1)21(1)(1)311(7)91(7)81(8)9k k k k k k k x x x x x x x +++++⎧=++⎪⎪⎪=+⎨⎪⎪=+⎪⎩由初始向量(0)(0,0,0),T x =迭代可得(1)(0.7778,0.9722,0.9753),T x =(2)(0.9942,0.9993,0.9994),T x =(3)(0.9999,0.9999,0.9999),T x =(4)(1,1,1),T x =(5)(1,1,1),T x =所以方程组的解为(1,1,1)T x =。
Gauss-Seidel迭代法
Gauss-Seidel 迭代法从Jacobi 迭代法的格式可以看出,后一步的迭代值仅仅与前一步有关,而且先算哪一个分量是无关紧要的。
新算出来的分量无法及时地用到下一个分量的计算之中,导致收敛的速度比较慢。
如果能将新计算出来的分量及时地更新到当前要计算的分量之中,应该可以加快收敛的速度。
这就引出了Gausss-Seidel 迭代法。
对Jacobi 迭代法进行修正,得到如下的Gauss-Seidel 迭代法:1(1)()11(1)i nk k i ij jijjj j i k i iib a xa xx a −+==++−−=∑∑,1,2,,i n =⋅⋅⋅同样地,Gauss-Seidel 迭代格式也有其相应的矩阵形式。
事实上,A D L U =++,于是,Ax b =等价于()D L x b Ux +=−。
于是,得到迭代格式(1)()()k k D L x b Ux ++=−也就是(1)1(1)1()1k k k x D Lx D Ux D b +−+−−=−−+, (1)1()1()()()k k k G x D L Ux D L b L x f +−−=−+++=+,其中,1()G L D L U −=−+,1()f D L b −=+。
Gsuss-Seidel 迭代法的Matlab 程序只需要在Jacobi 迭代地程序中做少量改动即可,这里不再写出。
例2.试用Gauss-Seidel 迭代法解线性方程组1231021321011512510x x x −−⎛⎞⎛⎞⎛⎞⎜⎟⎜⎟⎜⎟−−=⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟−−⎝⎠⎝⎠⎝⎠【解答】 迭代格式为()()23(1)1(1)()(1)132(1)(1)(1)3123210152101025k k k k k k k k k x x x x x x x x x ++++++⎛⎞++⎜⎟⎜⎟⎛⎞⎜⎟++⎜⎟=⎜⎟⎜⎟⎜⎟⎜⎟⎝⎠++⎜⎟⎜⎟⎝⎠选(0)(0,0,0)T x =作为初值和610ε−=作为控制精度,选2-范数来衡量误差。
gauss-seidel求解线性方程组
#define N 20
double a[N][N]; //声明系数矩阵
double b[N]; //声明方程组右边的值(数组)
double eps; //声明相对误差变量
double x[3]={0,0,0};
int iteration;
//函数声明
void GetData(); //此函数用以进行对系数矩阵赋值
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%10lf ",a[i][j]);
}
printf("%10lf\n\n",b[i]);
}
printf("求解方程的准许误差是:%lf\n\n",eps);
}
//==================================================================================
//以下是主函数
void main()
{
printf("============================================================\n\n");
printf("此程序运用gauss-seidel迭代法求解方程组的解\n\n");
printf("============================================================\n\n");
//一下定义GetData()函数
void GetData()
用高斯-赛德尔迭代法解下列线性方程组
云南大学数学与统计学实验教学中心实验报告课程名称:数值计算方法 学期: 2011—2012学年第一学期 成绩:指导教师: 学生姓名:学生学号: 实验名称:用高斯-赛德尔迭代法解下列线性方程组实验编号:No. 4 实验日期: 2011/11/6 实验学时: 3 学院: 数学与统计学院 专业: 数学与应用数学年级: 2010级一、实验目的加强"追赶法"在解方程组中的应用,掌握多种不同的解线性方程组的解法以及编程的应用二、实验内容用高斯-赛德尔迭代法解下列线性方程组,要求当||)()1(k k x x -+||510-≤时迭代终止。
⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---------------626050411141010014001100410010141001014654321x 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 nij ij k k k iij jj j i ii iiiia ab x x x k i n a a a -++==+⎡⎤=-+==⎢⎥⎢⎦⎣∑∑此种迭代法称为高斯—赛德尔()G auss seidel -方法。
高斯-赛得尔迭代法
0
则
L~ D 1L, U~ D1U
于是 I L~ D1D D1L D1(D L) (3 16)
7
解线性方程组的迭代法
x(k1) (I L~)1U~x(k ) (I L~)1 g I L~ D1D D1L D1(D L) L~ D 1L, U~ D1U
将式(3-16)代入式(3-15)得
b1n xn(k)
g1
x2(k
1)
b x (k1) 21 1
b23x3(k) L
b x (k 2n1 n1
)
b2nxn(k)
g2
M
x (k1) n
b x (k1) n1 1
bn2x2(k1)
bn3x3(k1)
L
b x (k1) nn1 n1
gn
(3 13)
p4
2
解线性方程组的迭代法
b2n xn(k )
g2
M
x (k 1) n
bn1x1(k )
bn2 x2(k )
bn3 x3(k )
L
bnn
1xn
( 1
k
)
gn
其中
bij
aij aii
,
gi
bi aii
(i j,i, j 1, 2,L , n),
(i 1, 2,L , n).
(3 12)
1
解线性方程组的迭代法
因此,在Jacobi迭代法的计算过程中,要同时保留
即每算出新近似解的一个分量
x , ( k 1) i
再算下一个
x 分量
x(k 1) i 1
时,用新分量
x(k 1) i
代替老分量
(k ) i
进行计算。这样,在整个计算过程中,只需用n个
Chapter 5 线性方程组的迭代法 例题
用 Gauss-Seidel 迭代法解该方程组的迭代公式为:
( k 1) (k ) (k ) x1 14 2 x 2 3x3 , (1) ( k 1) 1 ( k 1) (k ) (18 2 x1 2 x3 ), (2) x2 5 ( k 1) 1 ( k 1) ( k 1) x3 (20 3x1 x2 ), (3) 5
aii 0, i 1,, n ,则 Ax=b 化为 x D1( L U ) x D1b
(1)
若记 B1 D1( L U ),f1 D1b
(2) (3)
则方程组(1)的迭代形式可写作 x (k 1) B1 x (k ) f1 (k 0,1,2,) 则(2) 、 (3)称 A 雅可比迭代 7.当 a 满足( ( ) B 高斯-塞德尔迭代 C LU 分解 D
( k 1) x3
。
3.若线性方程组 Ax=b 的系数矩阵 A 为严格对角占优阵,则雅可比迭代和高斯-塞德尔 迭代 。 4.线性方程组 Ax=b 中令 A=D+L+U,其中 D 是 A 的对角部分构成的矩阵,L 和 U 分别 是 A 的严格下和上三角矩阵,则 Gauss-Seidel 迭代法的迭代矩阵是 。
Chapter 5 线性方程组的迭代法 例题:
1.对于方程组
2 x1 5 x2 1 ,Jacobi 迭代法的迭代矩阵是 10x1 4 x2 3
。
x1 2 x2 2 x3 1 2 . 利 用 高 斯 - 塞 尔 德 迭 代 法 解 线 性 方 程 组 x1 x2 x3 3 的迭代格式中, 2 x 2 x 5 x 0 2 3 1
(3)
