matlab - 特征值和特征向量计算中的通缩
问题描述
使用这种方法,我应该能够通过在每次迭代中获得最大值来获得特征值。但是,我的代码能够获得的只是第一个特征值(不一定是最大的),我不知道问题出在哪里。
function [Vect,Vp]=PID(A,precision)
nbVal= 50;
[n,m]=size(A);
X=zeros(n,1);
X(1,1)=1;
Vect=zeros(n,min(n,nbVal));
Vp=zeros(1,min(n,nbVal));
XG=zeros(1,n);
j=1;
for i=1:min(nbVal,n)
Y = rand(n,1);
while (max(abs(Y/norm(Y)-X/norm(X))>=precision))
X=Y/norm(Y);
Y=A*X;
end
Vect(:,i)=X;
% To prevent a division by 0
while (X(j,1)==0 && j<=n)
j = j + 1;
end
if X(j,1)~=0
Vp(1,i) =Y(j,1)/X(j,1);
end
% Wielandt Deflation
YG= rand(1,n);
while (max(abs(YG/norm(YG)-XG/norm(XG)))>=precision )
XG=YG/norm(YG);
YG=XG*A;
end
A2=A-Vp(1,i)*(X*XG)/(XG*X);
A=A2;
end
end
解决方案
推荐阅读
- python - 如何使用python更新db2表中列的所有值
- java - 使用泛型休眠多对一双向
- sql - SQL 按整数值的连续范围分组
- java - 无法在动态创建的 Webview 中访问相机
- angular - forChild 和 forRoot 与路由器模块一起使用
- java - 使用 Selenium/Katalon 在 html 表上进行迭代
- powershell - 如何在“Invoke-Expression”中使用变量作为命令的参数
- angular - 如何将 css 应用于 ngx-formly 表单域?
- python - 在 django 中实现两个因素
- python - Keras自定义损失函数不打印张量的值