The eigenvalues of eigs change with the input target, Why?
조회 수: 1 (최근 30일)
이전 댓글 표시
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
채택된 답변
Andrew Knyazev
2021년 12월 22일
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
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!