PAGE
PAGE 10
迭代法求解线性方程组的研究
【摘要】:本文总结了解线性方程组的三个迭代法,Jacobi迭代法,Gauss-seidel迭代法,SOR迭代法,并且介绍了现代数值计算软件MATLAB在这方面的应用,即分别给出三个迭代法的数值实验。
【关键字】:Jacobi迭代法 Gauss-seidel迭代法 SOR迭代法 数值实验
引言
迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重要方法。
迭代法的基本思想是用逐次逼近的方法求解线性方程组。
设有方程组
…①
将其转化为等价的,便于迭代的形式
…②
(这种转化总能实现,如令),
并由此构造迭代公式
…③
式中B称为迭代矩阵,f称为迭代向量。对任意的初始向量,由式③可求得向量序列,若,则就是方程①或方程②的解。此时迭代公式②是收敛的,否则称为发散的。构造的迭代公式③是否收敛,取决于迭代矩阵B的性质。
本文介绍三种解线性方程组的最主要的三种迭代法:Jacobi迭代法,Gauss-Seidel迭代法和SOR迭代法。本文结构如下:第二部分介绍Jacobi迭代法及其数值实验,第三部分介绍Gauss-Seidel迭代法及其数值实验,第四部分介绍SOR迭代法及其数值实验,第五部分总结。
雅克比(Jacobi)迭代法
雅克比迭代法的格式
设有方程组
…①
矩阵形式为,设系数矩阵A为非奇异矩阵,且
从式①中第i个方程中解出x,得其等价形式
…②
取初始向量,对式②应用迭代法,可建立相应的迭代公式:
…③
也可记为矩阵形式:
…④
若将系数矩阵A分解为A=D-L-U,式中
,
,
。
则方程Ax=b变为
得
于是
于是式中④中的 。
式③和式④分别称为雅克比迭代法的分量形式和矩阵形式,分量形式用于编程计算,矩阵型式用于讨论迭代法的收敛性。
雅克比迭代法的程序
雅克比迭代法的MATLAB函数文件 agui_jacobi.m如下。
Function x= agui_jacobi(a,b)
%a为系数矩阵,b为右端向量,为初始向量(默认为零向量)
%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;