数值分析4..doc
文本预览下载声明
2.迭代法
仔细研究迭代法就会发现在逐个求的分量时,当计算到时,实际上前面的个分量,,…,都已求得,但却被弃之不用,而仍用旧分量计算.直观上,可以想象新计算出的分量可能要比旧的要准确些,因此设想一旦新的分量已求出,马上就用新的分量替代,即在迭代中求时用,,…,分别替代,,…,,称这种方法为迭代法,简称迭代.
一般地,迭代法的具体格式如下:
其矩阵表示式为:
整理得
其中,=,,称为迭代矩阵.
注:(1)的特征方程
利用上式计算出矩阵的特征值,根据谱半径可以判别出迭代是否收敛.
(2)迭代法简单且每次迭代只需作矩阵和向量的一次乘法,比较适合于“平行计算”,不足之处是需要两个向量存储空间来存储和;迭代只需一个向量存储空间,一旦计算出立即存入的位置,节省一套存储单元,这是对迭代的改进.在某些情况下它也起到加速收敛的作用.但它是一个典型的“串行算法”,每步迭代中,必须依次计算各个解分量.
(3)可以证明,当系数阵是严格对角占优或为对称正定阵时,迭代是收敛的.
更一般地,我们有:
定理:设迭代矩阵为非负矩阵(即),则下列关系有且只有一个成立:
①==0
②0<<<==1
④1<<迭代矩阵非负时,迭代与迭代或同时收敛,或同时发散;同时收敛时,迭代比迭代快.
(4)用类似的方法可以在中编制迭代程序:建立名为的文件名
%using Gauss-Seidel iterative to solve linear algebraic equations ax=b
function [y,r,n]=seidel(a,b,x0,e)
disp(Gauss-Seidel iteration on solving linear equations)
D=diag(diag(a));
U=-triu(a,1);
L=-tril(a,-1);
G=(D-L)\U;
f=(D-L)\b;
y=G*x0+f;
n=1;
while norm(y-x0,inf)=e
x0=y;
y=G*x0+f;
n=n+1;
end
y
r=norm(y-x0,inf)
n
给定方程组
试判别迭代和迭代的收敛性,若收敛,对初值,求满足的解.
解:A=[8 -1 1;2 10 -1;1 1 -5];
b=[1;4;3];
D=diag(diag(A));
U=-triu(A,1);
L=-tril(A,-1);
B=D\(L+U);
G=(D-L)\U;
s=eig(B);
t=eig(G);
p1=max(abs(s))
p1 =
0.2266
p2=max(abs(t))
p2 =
0640
可以看出,迭代和迭代的谱半径都小于1,因而两种算法都是收敛的.但迭代的谱半径更小一些,因而比迭代收敛速度要快.
x0=[0;0;0];
e=1e-3;
y=jacobi(A,b,x0,e)
Jacobi iteration on solving linear equations
y =
0.2250
0.3056
-0.4938
r =
2.8950e-004
n =
6
y=seidel(A,b,x0,e)
Gauss-Seidel iteration on solving linear equations
y =
0.2250
0.3056
-0.4939
r =
5.2148e-004
n =
4
3.其它迭代法简介
对于大规模的稀疏方程组,迭代和迭代是两种基本迭代方法,并且代表了两种典型的算法:平行算法和串行算法.此外,还有一些带参数的算法,如:
算法(逐次超松弛法):在迭代法基础上发展得到的,其迭代格式:
称为松弛因子(relaxation factor).
算法(同步迭代法):是在迭代基础上发展得到的,其迭代格式是:
这两种算法都牵涉到参数的选取.对方法,只有当方程组的系数阵具有一些特殊性质,如:对称正定的三角阵等才能求得最优的松弛因子
其它情况,要反复试验才能求得比较满意的,选得恰当的才能使方法起到加速作用,一般的取值在1与1.7之间.对算法,当对称正定时,可以验证当
时,收敛;当
时收敛最快.当为三对角或五对角阵时,可以解析的得到的最大、最小特征值,并且容易验证:,此时法即为方法.
4.算法:
可以证明,算法的迭代矩阵为
=,
其中,矩阵与迭代方法中相同.
根据这一公式,可以用简单的编制算法程序如下:
建立文件名,内容为:
%using
显示全部