15章 求矩阵特征值和特征向量(2)

2019-08-30 22:31

键盘输入矩阵A、迭代初值向量u、精度控制eps和迭代允许最大次数nmax,程序即可给出每次迭代的次数和对应的迭代特征值、特征向量及误差序列,它们都按10位有效数输出。其中最后输出的结果即为所求的特征值和特征向量序。如果迭代超出nmax次还没有求出满足精度的根则输出迭代超限提示,此时可以根据输出序列判别收敛情况。

程序中变量说明: a:存放矩阵A

u初始向量u和迭代过程中的向量u

(k)

v: 存放迭代过程中的向量V a1:存放逆矩阵A-1

m1: 存放所求特征值和迭代过程中的近似特征值 nmax:存放迭代允许的最大次数

eps: 存放误差精度

fmax[x]: 给出向量x中绝对值最大的分量 k: 记录迭代次数 t1 :临时变量

注:迭代最大次数可以修改为其他数字。

(0)

(k)

(0)

及所求特征向量

例题与实验

例3.用反幂法求矩阵

?2?A??1?1??2133??1??1??

的按模最小的特征值及其相应特征向量,要求误差< 10-5。

解:执行幂法程序后在输入的4个窗口中按提示分别输入

{{2.,-2.,3.}, {1,1.,1}, {1.,3,-1}},{1,0,1},0.00001,100 每次输入后用鼠标点击窗口的“OK”按扭,得如下输出结果。 …………………………………………………….

k=12 特征值=0.9995193167 误差=0.002553354512 特征向量={-0.9990991337, 1., 0.9988281951} k=13 特征值=1.00052327 误差=0.001003953492 特征向量={-0.9998950625, 0.9994143792, 1.}

k=14 特征值=0.9998814738 误差=0.0006417963548 特征向量={-0.9997696935, 1., 0.9997070364}

k=15 特征值=1.000131384 误差=0.0002499099059 特征向量={-0.9999720617, 0.9998535356, 1.}

k=16 特征值=0.9999705536 误差=0.0001608301282 特征向量={-0.9999418581, 1., 0.9999267582} k=17 特征值=1.000032909 误差=0.00006235517185 特征向量={-0.9999928266, 0.9999633802, 1.} k=18 特征值=0.9999926591 误差=0.00004024964909 特征向量={-0.9999854018, 1., 0.9999816895}

k=19 特征值=1.000008234 误差=0.00001557505036 特征向量={-0.9999981857, 0.9999908448, 1.}

k=20 特征值=0.9999981671 误差=0.00001006707749 特征向量={-0.9999963435, 1., 0.9999954224}

k=21 特征值=1.000002059 误差=3.892226105 10-6

特征向量={-0.9999995441, 0.9999977112, 1.}

此结果说明迭代21次后得到满足要求的解: k=21 特征值=1.000002059 误差=3.892226105 10 特征向量={-0.9999995441, 0.9999977112, 1.}

注意到本题按模最小的特征值为1,因此求解效果较满意。如果将如上输入的迭代初值改为常用的{1,1,1},则得到如下结果。

k=1 特征值=3. 误差=2.666666667 特征向量={1., 1., 1.}

k=2 特征值=3. 误差=2.220446049?10-15 特征向量={1., 1., 1.}

这个结果是按模最大的特征值,而不是按模最小的特征值,因此选用初值要小心。

-6

Jacobi方法

Jacobi旋转法算法

1.2.输入矩阵A,误差?Fork?1,2,?(k?1)2.1选取apq?maxaiji?j(k?1),记录p,q2.2由tan2??(k)2apq(k?1)(k?1)(k?1)app?aqq,???确定旋转角?,获得旋转矩阵4(k)(k)J(p,q,?)2.3apj?apj2.4aqj2.5aij(k)(k?1)cos??aqj(k?1)sin?,ajp?apjcos?,(k)j?p,q(k)??apj?aij(k?1)sin??aqj(k?1)ajq?aqjj?p,q(k)(k)(k?1)(k?1)(k?1),i,j?p,q222.6app?app(k)cossin??aqq??aqq(k?1)sincos22??2apq(k?1)(k?1)sin?cos?sin?cos?2.7aqq?app(k?1)??2apq2.8计算E(Ak)??(aiji?j(k)2)2.9如果E(Ak)??,输出对角矩阵D?diag(?1,?2,?,?n)和特征向量矩阵J,停止

注:如上算法中Ak=(aij(k)), A0=(aij(0))= (aij)。

Jacobi旋转法算法程序

Clear[a,bb];

a=Input[\矩阵A=\; n=Input[\矩阵阶数n=\;

eps= Input[\误差精度eps =\;

nmax=Input[“迭代允许最大次数nmax=”]; k=0;

bb=IdentityMatrix[n];

ea=Sum[a[[i,j]]^2,{i,1,n},{j,1,n}]-Sum[a[[i,i]]^2,{i,1,n}]//N; While[ea>eps&&k

Print[\迭代次数k=\

Do[If[Abs[a[[i,j]]]>m,m=Abs[a[[i,j]]];p=i;q=j], {i,1,n},{j,i+1,n}]; mu=a[[p,p]]-a[[q,q]];

If[mu==0,thi=Pi/4,thi=ArcTan[2*a[[p,q]]/mu]/2]; s=Sin[thi]//N; c=Sqrt[1-s^2];

a1=bb[[p]];

bb[[p]]=c*bb[[p]]+s*bb[[q]];

bb[[q]]=-s*a1+c*bb[[q]];

pp=a[[p,p]]*c*c+a[[q,q]]*s*s+2a[[p,q]]*s*c; qq=a[[p,p]]*s*s+a[[q,q]]*c*c-2a[[p,q]]*s*c; Do[a1=a[[p,j]];

a[[p,j]]=c*a[[p,j]]+s*a[[q,j]]; a[[j,p]]=a[[p,j]]; a[[q,j]]=c*a[[q,j]]-s*a1; a[[j,q]]=a[[q,j]], {j,1,n}];

a[[p,p]]=pp;a[[q,q]]=qq;a[[p,q]]=0;a[[q,p]]=0;

ea=Sum[a[[i,j]]^2,{i,1,n},{j,1,n}]-Sum[a[[i,i]]^2,{i,1,n}]//N; k=k+1;

Print[\误差=\Print[\相似矩阵A=\Print[MatrixForm[a]]; Print[\特征向量J\

Print[MatrixForm[Transpose[bb]]] ];

If[k>=nmax,Print[“迭代超限”]]

说明:本程序用于求对称矩阵A的所有特征值及其相应特征向量。程序执行后,先通过键盘输入矩阵A、矩阵阶数n、精度控制eps和迭代允许最大次数nmax,程序即可给出每次迭代的次数和对应的迭代特征值、特征向量及误差序列。其中最后输出的结果即为所求的特

征值和特征向量。如果迭代超出nmax次还没有求出满足精度的根则输出迭代超限提示。此外,输出的特征值矩阵可以不是真正的对角矩阵,但它们的主对角元素就是满足要求的所有特征值。

程序中变量说明

a:存放矩阵A及其相似变换过程中的Ak bb: 存放特征向量矩阵J的转置

v: 存放迭代过程中的向量V

m1: 存放所求特征值和迭代过程中的近似特征值 nmax:存放迭代允许的最大次数 eps: 存放误差精度 k: 记录迭代次数

t1,mu,s,c,ea,p,q,m: 临时变量 a1,qq,pp:临时向量

(k)

例题与实验

例4.用Jacobi方法求矩阵

?2?A???1?0?

?12?10???1?2??的所有特征值及其相应特征向量,要求误差<10-6。

解:执行Jacobi方法程序后在输入的4个窗口中按提示分别输入 {{2,-1,0},{-1,2,-1},{0,-1,2}},3,0.000001,30

每次输入后用鼠标点击窗口的“OK”按扭,得如下输出结。

迭代次数k=0 误差=2.

相似矩阵A=

1. 0 -0.707107 0 3. -0.707107 -0.707107 -0.707107 2

特征向量J

0.707107 -0.707107 0 0.707107 0.707107 0 0 0 1

迭代次数k=1 误差=1. 相似矩阵A=

0.633975 -0.325058 0

-0.325058 3. -0.627963 0 -0.627963 2.36603

特征向量J

0.627963 -0.707107 -0.325058 0.627963 0.707107 -0.325058 0.459701 0 0.888074

迭代次数k=2 误差=0.211325 相似矩阵A=

0.633975 -0.276837 -0.170364 -0.276837 3.38645 0

-0.170364 0 1.97958

特征向量J

0.627963 -0.431846 -0.647434 0.627963 0.772574 0.0937614 0.459701 -0.465444 0.756332

………….. 迭代次数k=5

误差=8.30891?10-6

相似矩阵A=

0.585788 0.00203811 -0.0000241542 0.00203811 3.41421 0 -0.0000241542 0 2.

特征向量J

0.499652 -0.50036 -0.707098 0.707616 0.706597 0.0000120684 0.499628 -0.50036 0.707115

迭代次数k=6

误差=1.16685?10-9 相似矩阵A=

0.585786 0 -0.0000241542 0 3.41421 -1.7405 ?10-8 -0.0000241542 -1.7405? 10 2.

特征向量J

0.500012 -0.5 -0.707098 0.707107 0.707107 0.0000120684

-8


15章 求矩阵特征值和特征向量(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:银行存量客户盘活项目方案3.0

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: