资源描述
(迭代法)
设线性方程组AX=b,
1)Jacbi迭代法:设方程系数矩阵的A的对角线元素,是最大迭代次数,是容许误差.
a)取初始向量,令;
b)对,计算;
c)如果,则输出,结束;否则执行d)。
d)如果,则不收敛,结束;否则,执行b)。
2)Gauss—Seidel迭代法
a)取初始向量,令;
b)对,计算;
c)如果,则输出,结束;否则执行d).
d)如果,则不收敛,结束;否则,执行b)。
例7。用迭代法求解线性方程组AX=b,其中
已知该方程组的解.
1)Jacbi迭代法
>〉 A=[10 —1 2 0;—1 11 -1 3;2 —1 10 —1;0 3 -1 8];b=[6 25 —11 15]’;
a=diag([A(1,1),A(2,2),A(3,3),A(4,4)]); format rational
B=a\(a-A), d=a\b;
B =
0 1/10 -1/5 0
1/11 0 1/11 -3/11
-1/5 1/10 0 1/10
0 -3/8 1/8 0
X=zeros(4,16); x=[0 0 0 0]';
〉> for n=1:15 x=B*x+d; X(:,n+1)=x; end
〉〉 format short, X
X =
Columns 1 through 8
0 0。6000 1.0473 0。9326 1。0152 0.9890 1.0032 0.9981
0 2。2727 1.7159 2。0533 1.9537 2.0114 1。9922 2.0023
0 —1.1000 -0。8052 —1。0493 —0.9681 -1。0103 -0。9945 -1。0020
0 1。8750 0。8852 1。1309 0.9738 1.0214 0。9944 1。0036
Columns 9 through 16
1.0006 0.9997 1。0001 0。9999 1.0000 1.0000 1。0000 1.0000
1.9987 2。0004 1。9998 2。0001 2。0000 2。0000 2。0000 2.0000
—0。9990 —1.0004 -0。9998 —1。0001 -1.0000 -1。0000 —1.0000 -1.0000
0。9989 1.0006 0.9998 1。0001 1。0000 1.0000 1.0000 1.0000
2)Gauss-Seidel迭代法
>> A=[10 -1 2 0;-1 11 —1 3;2 —1 10 -1;0 3 -1 8];b=[6 25 —11 15]';
a=diag([A(1,1),A(2,2),A(3,3),A(4,4)]); format rational
B=a\(a-A);d=a\b;
X=zeros(4,8);x=[0 0 0 0]’;
〉〉x1=0;x2=x1;x3=x1;x4=x1;
for n=1:8
x1=B(1,:)*x+d(1);x=[x1,x2,x3,x4]’;
x2=B(2,:)*x+d(2);x=[x1,x2,x3,x4]';
x3=B(3,:)*x+d(3);x=[x1,x2,x3,x4]’;
x4=B(4,:)*x+d(4);x=[x1,x2,x3,x4]';
X(:,n+1)=x; %保存迭代过程的中间变量
end
〉> format short, X
X =
0 0。6000 1。0302 1。0066 1.0009 1.0001 1.0000 1。0000 1.0000
0 2。3273 2.0369 2。0036 2。0003 2.0000 2.0000 2.0000 2.0000
0 -0.9873 -1.0145 -1.0025 —1。0003 —1。0000 —1.0000 —1.0000 —1。0000
0 0。8789 0。9843 0.9984 0。9998 1.0000 1.0000 1。0000 1。0000
可以看出高斯-塞德尔迭代法的收敛速度只需5次迭代就求得了结果,明显比雅可比迭代法快。
二、特征值和特征向量的数值求法
对低价的方阵我们可以使用公式来进行特征值的求解,但是对于高阶的矩阵,由于行列式机计算和高次多项式方程求解的复杂性,我们需要寻找数值解法,通过计算机的迭代运算快速求解。
对于矩阵A,任意给定一个初始向量,可由求得一个新的向量,对它做归一化处理,有,其中表示绝对值最大的元素.
整理可得.如果,则就是矩阵A的特征值,就是矩阵A对应于的特征向量;如果,将再次作为初始向量,从而得到,于是我们得到迭代公式:
由数值分析基本定理可知,当时,我们近似认为与是一致的,就是矩阵对应于特征值的特征向量。
这种方法称为幂法,它求得的特征值是矩阵A所有的特征值中绝对值最大的那个。令,由矩阵的基本性质可以知道,是矩阵A所有的特征值中绝对值最小的.然后采用从最大值和最小值两个方向逐步搜索的方法,就可以找到矩阵的所有特征值和特征向量.在工程应用中,我们需要着重学习和掌握利用幂法进行近似求解的基本思路和方法,有时甚至不得不采用一些容易实现的方法来求得在某一精度范围内的近似解,以拓展理论的应用。
例5。 用幂法求矩阵A模最大的特征值和其对应的特征向量。
>> A=[1 2 3;2 3 4;3 4 5];n=0;dx=1;x=[1 1 1]';% x是迭代初始向量
while max(abs(dx))〉1e-5 % 设置误差精度
x1=A*x;
m=find(abs(x1)==max(abs(x1))); % 找出x1中绝对值最大的元素的位置
m=m(1); % 防止重特征值引起的错误
lamda=x1(m); % lamda是x中绝对值最大的元素
x1=x1/lamda;dx=x1—x;x=x1; %令x1为新初值重新进行迭代
n=n+1; % 记录迭代次数;
end
〉〉 x,x1,n, lamda ,dx,eig(A)
x =
0.5247
0.7623
1.0000
x1 =
0.5247
0.7623
1.0000
n =
5
lamda =
9.6235
dx =1.0e-005 *
-0.7238
-0.3619
0
ans =
-0.6235
-0.0000
9.6235
展开阅读全文