公文高手,超级方便的公文写作神器! 立即了解


15章 求矩阵特征值和特征向量

第15章求矩阵特征值和特征向量

幂法

幂法规范化算法

1.输入矩阵a、初始向量u,误差eps2.k。1

3.计算v(k)。au(k-1)

4.mk。max(v),mk-1。max(v)5.uk。v(k)/mk

(1)

6.如果|mk-mk-1|m,m2=x[[k]];m=m1],{k,1,length[x]}];m2]v=a.u;m0=fmax[u];m1=fmax[v];t=abs[m1-m0]//n;k=0;

while[t>eps&&k=nmax,print[\迭代超限\

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

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

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

(k)

(0)

(k)

及所求特征向量

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

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

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

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

例题与实验

例1.

用幂法求矩阵

。133。a。。44。。88。

65。6135。。46。。90。。的按模最大的特征值及其相应特征向量,要求误差eps&&k=nmax,print[\迭代超限\

说明。本程序用于求矩阵a按模最小的特征值及其相应特征向量。程序执行后,先通过

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

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

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

(k)

v:存放迭代过程中的向量va1:存放逆矩阵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.89222610510-6

特征向量={-0.9999995441,0.9999977112,

1.}

此结果说明迭代21次后得到满足要求的解:k=21特征值=1.000002059误差=3.89222610510特征向量={-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。a,。。。确定旋转角。,获得旋转矩阵4(k)(k)j(p,q,。)2.3apjapj2.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。。a。。a(k。1)sincos22。。2apq(k。1)(k。1)sin。cos。sin。cos。

2.7a。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&&km,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]];

。本题的4个特征值为{4.,

1.+2.i,

1.-2.i,-1.},可见收敛效果相当满意

。本题的4个特征值为{4.,

1.+2.i,

1.-2.i,-1.},可见收敛效果相当满意


(未完,全文共7824字,当前显示1433字)

(请认真阅读下面的提示信息)


温馨提示

此文章为6点公文网原创,稍加修改便可使用。只有正式会员才能完整阅读,请理解!

会员不仅可以阅读完整文章,而且可以下载WORD版文件

已经注册:立即登录>>

尚未注册:立即注册>>

6点公文网 ,让我们一起6点下班!