- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用标准文案
精彩文档
隐式QR法求实矩阵的全部特征值matlab实现
要求:用matlab编写通用子程序,利用隐式QR法求实矩阵的全部特征值和特征向量。
思想:隐式QR法实质上就是将一个矩阵 Schur化,之后求解特征值就比较方便。而隐式QR法还需要用到household变换,以及上hessenberg变换。最后使用QR迭代,达到Schur化的结果。
步骤:
将矩阵A上hessenberg化(算法6.4.1),送而得到一个上hessenberg形矩阵H;
可约性判定,也就是判断次对角线元素是否非零,如果次对角线元素非零,则不可约。
Schur化,也就是通过QR迭代,将矩阵H变化成为某些次对角线元素变成0,同时还要满足,这些元素之间间隔最大为1,那么,所得到的最重的矩阵H就是一个Schur形矩阵。
假如两个等于0的次对角线元素间隔为0,那么该元素的上面一个元素,也就是H的对角线上的元素,即为其中一个特征值;假如两个等于0的次对角线元素间隔为1,那么在这两个元素之间就形成了一个2*2的矩阵,可以求解一个一元二次方程来得到两个共轭的特征值。
实验代码:详见附录2
实验结果:(代码相见附录2)
(i)设矩阵A如下:
求x=0.9, 1.0, 1.1时的特征值和特征向量。
X=0.9:
r是特征值,V是特征向量矩阵。
X=1:
r是特征值,V是特征向量矩阵。
X=1.1:
r是特征值,V是特征向量矩阵。
(ii)
求的所有根。
附录2
隐式QR迭代:
主程序:
function [r,V]=SchurQR(A)
%向量r用来储存特征值
%Hessenberg分解:
[m,m]=size(A);
for k=1:m-2
[v,b]=house(A(k+1:m,k));
H1= eye(m-k)-b*v*v;
H2=eye(m);
for i=k+1:m
for j=k+1:m
H2(i,j)=H1(i-k,j-k);
end
end
if k==1;
H=H2;
else
H=H*H2;
end
A(k+1:m,k:m)=H1*A(k+1:m,k:m);
A(1:m,k+1:m)= A(1:m,k+1:m)*H1;
end
u=10e-5;
for i=2:m;
if abs( A(i,i-1))=(abs(A(i,i))+ abs(A(i-1,i-1)))*u;
A(i,i-1)=0;
end
end
%QR迭代:
H22=A;
x=Ifreducible(H22);
while x==1
H22=Francis(H22);
x=Ifreducible(H22);
end
[r,V]=EigValue(H22);
子程序1:
function [r,V]=EigValue(A)%计算A的特征值,特征向量
[n,n]=size(A);
r=zeros(1,n);
y=zeros(1,n-1);%y用来储存次对角线元素
for i=1:n-1
y(i)=A(i+1,i);
end
m=0;
for i=1:n-1
if abs(y(i)-0)1e-5
m=m+1;
end
end
if m==0
x=1;
else
z=zeros(1,m);%z用来储存值为0的y向量的角标。
j=1;
i=1;
while(in)
if abs(y(i)-0)1e-5
z(j)=i;
j=j+1;
end
i=i+1;
end
end
if z(1)==2%次对角线第一个等于0的元素的位置不同,需要2分类讨论
p=[1,A(1,1)+A(2,2),A(1,1)*A(2,2)-A(1,2)*A(2,1)]
r(1:2)=roots(p);%求2*2矩阵的特征值
j=1;
while jm
if z(j+1)-z(j)==1
r(z(j+1))=A(z(j+1),z(j+1));
end
if(z(j+1)-z(j)==2)
p=[1,-(A(z(j+1)-1,z(j+1)-1)+A(z(j+1),z(j+1))),A(z(j+1)-1,z(j+1)-1)*A(z(j+1),z(j+1))-A(z(j+1)-1,z(j+1))*A(z(j+1),z(j+1)-1)];
r((z(j+
文档评论(0)