The eigenvalues of eigs change with the input target, Why?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Jiali
el 13 de Ag. de 2021
Respondida: Andrew Knyazev
el 22 de Dic. de 2021
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 comentarios
Respuesta aceptada
Andrew Knyazev
el 22 de Dic. de 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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Linear Algebra en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!