How to find eigenvalues of problem that dont have the form of standard eigenvalue problem?
3 ビュー (過去 30 日間)
古いコメントを表示
Dear Math Professionals in Matlab.
Please Help any way you can.

My problem is exactly in the form of first above equation. Doing above method on my problem in Matlab I am trying to find eigenvalues of my equetion. But, I got several omegas for several LVs(the omegas continuesly increase when LV increases). While I expect my results converge to specific omegas when LV increases to high values.
How I can find the eigenvalues of my problem(first above equation) in Matlab?
How the value of LV must be choosen in above method? I am amazed.
clear
load M11;M11=mat;save M11;clear mat;
load M12;M12=mat;save M12;clear mat;
load M21;M21=mat; save M21; clear mat;
load M22;M22=mat; save M22; clear mat;
load K11;K11=mat;save K11;clear mat;
load K12;K12=mat;save K12;clear mat;
load K21;K21=mat; save K21; clear mat;
load K22;K22=mat; save K22; clear mat;
[M,N]=size(K22);
M22 =zeros(N);
Mt=inv(sqrtm(M11));n=1;
for LV=1:10:1000
A11=Mt*K11*Mt;
A12 = LV*Mt *K12;
A21 = LV*K21 * Mt;
A22 = K22;
AA =[A11, A12;A21, A22];
B=eig(AA);
C=sqrt(B);
D=C*9.598721848;
R=sort(real(D));
F=find(R>0);
result(1,n)=R(F(1));
n=n+1;
end
plot(n,result)
Please help!!!
0 件のコメント
採用された回答
David Goodmanson
2017 年 4 月 7 日
編集済み: David Goodmanson
2017 年 4 月 7 日
Hi Mehdi, I can't address whether there would be a successful solution, and there may well be better algorithms available now than this one, but I can comment on the method. The idea is to replace
[M11 0]
[ 0 0]
with
[M11 0]
[ 0 eps*I]
for some small value eps, small enough to perturb the problem only a small amount. Let N = M^(-1/2), multiply your equation on the left by
[N 0]
[ 0 c*I]
and insert the identity matrix in the form
[N 0 ] [N^-1 0]
[0 c*I] [ 0 (1/c)*I]
between the matrices and the eigenvector
[X ]
[lambda].
Multiply it all out blockwise and you get what they got, with
I22 = c^2*eps*I.
You want I22 to be the identity matrix, so
c = 1/sqrt(eps).
c is what they called LV. So how small do you have to make eps to not affect the problem too much? Having no direct experience with this I don't know, but I would hazard a guess of least 10 times smaller than the smallest eigenvalue of M11. In your case the smallest eigenvalue is 3e-11 so you can plan accordingly. It does lead to some pretty big LV numbers. (The largest eigenvalue is 4e-3, so scaling could be a problem). Good luck!
2 件のコメント
David Goodmanson
2017 年 4 月 7 日
Hi Mehdi, I don't have anything new, except if you have not done so you could always let Matlab have a try at it directly with eig(K,M).
その他の回答 (1 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!