目录
实验六:矩阵特征值与迭代法
练习一
1. 已知矩阵A= ,向量
=
,构造迭代
,k=1,2,3,…
(1) 计算矩阵A的特征值及谱半径;
clc;clear;
a=[0,1;1,1];x0=[1;1];
tzz=eig(a);pbj=max(abs(tzz));
disp(tzz);disp(pbj);
tzz=-0.6180 1.6180
pbj=1.6180
(2) 检查向量序列 是否收敛?它的分量序列有何特点?
(3)将向量序列 画出,看看随迭代次数的逐渐增加,向量序列点如何分布?
x=[];x1=[];
for i=1:10
x0=a*x0;
x=[x,norm(x0)];
x1=[x1,x0];
end
x1
figure(1)
plot(x);
figure(2)
plot(x1(1,:),x1(2,:),'.',x1(1,:),x1(2,:))
x1 =
1 2 3 5 8 13 21 34 55 89
2 3 5 8 13 21 34 55 89 144
我们观察向量序列x发现:该序列并不收敛,它的分量序列的第一列和第二列均为类斐波拉切数列。
(4)计算向量序列 前后分量比值你会发现什么结论?与迭代矩阵的谱半径有何关系?
m1=[];m2=[];
for i=1:9
q1=x1(1,i+1)/x1(1,i);
m1=[m1,q1];
q2=x1(2,i+1)/x1(2,i);
m2=[m2,q2];
end
disp(m1);disp(m2);
m1=2.0000 1.5000 1.6667 1.6000 1.6250 1.6154 1.6190 1.6176 1.6182
m2=1.5000 1.6667 1.6000 1.6250 1.6154 1.6190 1.6176 1.6182 1.6180
我们发现该分量比值趋近于谱半径。
(5)将迭代矩阵换成矩阵A的逆矩阵,重复(1)一(4)的实验过程,对比分析后你能得出什么 结论?
clc;clear;
a1=inv([0,1;1,1]);x0=[1;1];
tzz=eig(a1);pbj=max(abs(tzz));
disp(tzz);disp(pbj);
x=[];x1=[];
for i=1:10
x0=a1*x0;
x=[x,norm(x0)];
x1=[x1,x0];
end
x1
figure(1)
plot(x);
figure(2)
plot(x1(1,:),x1(2,:),'.',x1(1,:),x1(2,:));
m1=[];m2=[];
for i=1:9
q1=x1(1,i+1)/x1(1,i);
m1=[m1,q1];
q2=x1(2,i+1)/x1(2,i);
m2=[m2,q2];
end
disp(m1);disp(m2);
tzz=-1.6180 0.6180
pbj=1.6180
x1 =
0 1 -1 2 -3 5 -8 13 -21 34
1 0 1 -1 2 -3 5 -8 13 -21
m1=
Inf -1.0000 -2.0000 -1.5000 -1.6667 -1.6000 -1.6250 -1.6154 -1.6190
m2=
0 Inf -1.0000 -2.0000 -1.5000 -1.6667 -1.6000 -1.6250 -1.6154
经过对比我们发现当A矩阵变为其逆时,谱半径不变,向量长度不变,向量分量变为了1-2=3的形式,向量分量前后之比趋近于谱半径的相反数。
2. 已知矩阵
在正方形区域 内随机选取不同的非零向量作为初始向量
,构造迭代
生成向量序列 .
(1) 在同一坐标系上画出迭代向量序列的图形,观察向量的分布规律,你能得出什么结论?
clc;clear;
b=[1/5,99/100;1,0];
x1=2.*rand(2,1)-1;
m1=[];
for i=1:30
x1=b*x1;
m1=[m1,x1];
end
figure(1)
plot(m1(1,:),m1(2,:),'*',m1(1,:),m1(2,:));
我们通过观察该图发现,随着迭代次数的增多,点逐渐分布在一条直线周围,震荡幅度逐渐变小。
(2)编程计算比值序列 ,
和
,你发现了什么?
n1=[];n2=[];n3=[];
for i=1:29
k1=m1(2,i)/m1(1,i);
n1=[n1,k1];
k2=m1(1,i+1)/m1(1,i);
n2=[n2,k2];
k3=m1(2,i+1)/m1(2,i);
n3=[n3,k3];
end
n1,n2,n3
n1 =
列 1 至 10
-0.2509 -20.6532 -0.0494 6.6180 0.1481 2.8849 0.3272 1.9086 0.4786 1.4841
列 11 至 20
0.5991 1.2609 0.6905 1.1318 0.7573 1.0529 0.8049 1.0032 0.8381 0.9711
列 21 至 29
0.8610 0.9502 0.8767 0.9364 0.8873 0.9273 0.8944 0.9212 0.8993
n2 =
列 1 至 10
-0.0484 -20.2467 0.1511 6.7518 0.3466 3.0561 0.5239 2.0895 0.6738 1.6693
列 11 至 20
0.7931 1.4483 0.8836 1.3205 0.9497 1.2424 0.9968 1.1931 1.0297 1.1614
列 21 至 29
1.0524 1.1407 1.0679 1.1271 1.0784 1.1180 1.0855 1.1120 1.0903
n3 =
列 1 至 10
-3.9852 -0.0484 -20.2467 0.1511 6.7518 0.3466 3.0561 0.5239 2.0895 0.6738
列 11 至 20
1.6693 0.7931 1.4483 0.8836 1.3205 0.9497 1.2424 0.9968 1.1931 1.0297
列 21 至 29
1.1614 1.0524 1.1407 1.0679 1.1271 1.0784 1.1180 1.0855 1.1120
第一个序列趋近于0.9,第二和第三个序列趋近于1.
3.已知矩阵A及向量x0如下:
(1)求矩阵A的特征值、特征向量和谱半径;
clc;clear;
a=[3,-1,-1;-12,0,5;4,-2,-1];
x0=[1;1;1];
[tzxl,tzz]=eig(a)
pbj=max(max(abs(tzz)))
tzxl =
0.4082 0.3906 0.3333
-0.4082 -0.1302 0.6667
0.8165 0.9113 0.6667
tzz =
2.0000 0 0
0 1.0000 0
0 0 -1.0000
pbj =2.0000
(2)编程完成迭代
,k=1,2,3,…
观察迭代产生的向量序列的分布规律。
m=[];
for i=1:100
x0=a*x0;
m=[m,x0];
end
plot3(m(1,:),m(2,:),m(3,:),'*',m(1,:),m(2,:),m(3,:));
随着迭代次数的增加,逐渐分布在一条线上。
推荐下一篇文章:
本文由作者自创,由于时间原因,难免存在一些错误,还请大家多多指正批评。创作不易,希望大家多多点赞支持,记得一键三连哦!