The eigenvalues of eigs change with the input target, Why?
1 view (last 30 days)
Show older comments
Dear all,
My goal is to compute the eigen-vectors of some dynamic system. However, I found that the eigenvalues vary depending on the input target.
For instance, target=1.00, no values other than 1.0 can be found. When target=0.95, the eigen-value 0.6248 can be found while the eigen-vectors seems strange. When target =0.8, the eigen-value 0.6248 can be found with correct eigen-vectors. I did check the condition number of Matrix, cond(P)=1.3422e4, not so big, why the eigenvalues and eigenvectors vary so huge? How can I improve the stability? Please lend me a hand. Thanks a lot.
Nx=17;
Ny=13;
N=Nx*Ny;
load test.mat;
P=[Pxx Pxy; Pyx Pyy];
lambda=1.5e-6;
target=1.0;
beta0=2*pi*(target+1e-3)/lambda;
num=30;
[V,beta2]=eigs(P,num,beta0^2);
condest(P)
beta=sqrt(diag(beta2));
neff=beta/(2*pi/lambda);
[ii,~]=find(abs(neff/target-1)>1e-3);
neff_re=neff(ii);
V_re=V(:,ii);
figure;
imagesc(reshape(abs(V_re(1:N,1)),[Nx,Ny]));
0 Comments
Accepted Answer
Andrew Knyazev
on 22 Dec 2021
This may be expected. One can fix it by running with muiltiple targets, collecting all the resulting eigenvectors and writing and running a code for postprocessing. The best and easiest postprocessing could be to orhthogonalize all the collected vectors (to safely handle possible duplicates) and then write the code and run https://en.wikipedia.org/wiki/Rayleigh%E2%80%93Ritz_method#For_matrices
0 Comments
More Answers (0)
See Also
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!