迭代法求解线性方程组的研究
- 格式:doc
- 大小:210.50 KB
- 文档页数:11
迭代法求解线性方程组的研究
【摘要】:本文总结了解线性方程组的三个迭代法,Jacobi 迭代法,Gauss-seidel 迭代法,SOR
迭代法,并且介绍了现代数值计算软件MATLAB 在这方面的应用,即分别给出三个迭代法的数值实验。
【关键字】:Jacobi 迭代法 Gauss-seidel 迭代法 SOR 迭代法 数值实验
一. 引言
迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重要方法。
迭代法的基本思想是用逐次逼近的方法求解线性方程组。
设有方程组
b Ax = …① 将其转化为等价的,便于迭代的形式
f Bx x += …② (这种转化总能实现,如令b f A I B =-=,),
并由此构造迭代公式
f Bx x k k +=+)()1( …③
式中B 称为迭代矩阵,f 称为迭代向量。对任意的初始向量)0(x
,由式③可求得向量序列∞0)(}{k x ,若*)(lim x x
k k =∞→,则*x 就是方程①或方程②的解。此时迭代公式②是收敛的,否则称为发散的。构造的迭代公式③是否收敛,取决于迭代矩阵B 的性质。
本文介绍三种解线性方程组的最主要的三种迭代法:Jacobi 迭代法,Gauss-Seidel 迭代法和SOR 迭代法。本文结构如下:第二部分介绍Jacobi 迭代法及其数值实验,第三部分介绍Gauss-Seidel 迭代法及其数值实验,第四部分介绍SOR 迭代法及其数值实验,第五部分总结。
二. 雅克比(Jacobi )迭代法
1. 雅克比迭代法的格式
设有方程组
),,3,2,1(1
n i b x a j j n
j ij ==∑= …①
矩阵形式为b Ax =,设系数矩阵A 为非奇异矩阵,且),,3,2,1(,0n i a ii =≠
从式①中第i 个方程中解出x ,得其等价形式 )(1
1
1j n j j ij ii i x a b a x ∑≠=-= …②
取初始向量),,,()
0()0(2)0(1)0(n x x x x =,对式②应用迭代法,可建立相应的迭代公式: )(1
1
1)
()1(∑≠=++-=n
j j i k j ij ii k i b x a a x …③
也可记为矩阵形式:
J x J k F B x k +==)
()1( …④
若将系数矩阵A 分解为A=D-L-U ,式中
⎪⎪
⎪⎪
⎪
⎭
⎫
⎝⎛=nn a a a D 2211,
⎪
⎪
⎪⎪⎪
⎪
⎭
⎫
⎝⎛=--0000121323121nn n n a a a a a a L ,
⎪⎪
⎪
⎪⎪
⎪
⎭
⎫
⎝⎛=--0000122311312n n n n a a a a a a D 。
则方程Ax=b 变为 b x U L D =--)(
得 b x U L Dx ++=)(
于是 b D x U L D x 11)(--++=
b
D x A D I b
D x A D D 1111)()(----+-=+-= 于是式中④中的 b D f A D I B J J 11,--=-=。
式③和式④分别称为雅克比迭代法的分量形式和矩阵形式,分量形式用于编程计算,矩阵型式用于讨论迭代法的收敛性。
2. 雅克比迭代法的程序
雅克比迭代法的MATLAB 函数文件 ag _jacobi.m 如下。
Function x= agui _jacobi(a,b)
%a 为系数矩阵,b 为右端向量,0x 为初始向量(默认为零向量)
%e 为精度(默认为1e-6),n 为最大迭代次数(默认为100)
x 为返回解向量。
n=length(b);
N=100;
e=1e-6;
x0=zeros(n,1);
x=x0;
x0=x+2*e;
k=0;
d=diag(diag,0);
1=-tril(a,-1);
u=-triu(a,1);
while norm(x0-x,inf)>e&k k=k+1; x0=x; x=inv(d)*(l+u)*x+inv(d)*b; k disp('x ) end if k=N warning(‘以达到最大迭代次数’);end 3. 数值例子 用雅克比迭代法求解如下线性方程组。 ⎪⎩⎪⎨⎧=+--=-+-=--42 58321072 210321321321x x x x x x x x x 解:在MATLAB 命令窗口求解例题