The eigenvalues of eigs change with the input target, Why?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Jiali
il 13 Ago 2021
Risposto: Andrew Knyazev
il 22 Dic 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 Commenti
Risposta accettata
Andrew Knyazev
il 22 Dic 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 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Linear Algebra in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!