Unable to find out left eigen vectors of symbolic matrix
3 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I have 3*3 matrix having symbolic elements. I tried to find out the eigen value, left eigen vector and right eigen vector using below command
[right_eig_vectors, eig_values] = eig(A);
[left_eig_vectors, ~] = eig(A.');
My understanding is that the left eigenvectors solve the following equation: W'*A-D*W'=0. But when I put that into solve ,it partially solve this equation of W'*A-D*W'=0. Can anyone help me?
3 件のコメント
Walter Roberson
2021 年 10 月 4 日
Looks solved to me?
Reminder: Using .' suggests that you are using real-valued A, but you did not tell us that. My understanding is that if A is potentially complex valued, you shoul be taking eig(A')
syms A [3 3]
[right_eig_vectors, eig_values] = eig(A)
[left_eig_vectors, ~] = eig(A.')
採用された回答
Christine Tobler
2021 年 10 月 5 日
The left eigenvectors are still expressed as right eigenvectors of M', meaning they satisfy a slightly different equation:
syms z1 z2 z3 z4 z5 z6 z7 ;
A=[z1 z2 z3; z4 z5 z6; 1 2 z7];
M=subs(A,[z1 z2 z3 z4 z5 z6 z7],[-0.1 0.1 -2 0.01 0.07 -0.5 0.2]);
[V, D] = eig(M);
[W, D2] = eig(M');
assert(isequal(D, D2))
double(norm(M*V - V*D))
double(norm(M'*W - W*D))
% Apply conjugate transpose to the second expression:
double(norm(W'*M - conj(D)*W'))
% Apply non-conjugate transpose instead:
double(norm(W.'*M - D*W.'))
% You can also apply CONJ to W, in which case the formula becomes:
W = conj(W);
double(norm(W'*M - D*W'))
% This last one matches what happens in EIG for floating-point numbers,
% where it's possible to compute left and right eigenvalues in one go.
Md = double(M);
[Vd, Dd, Wd] = eig(Md);
norm(Md*Vd - Vd*Dd)
norm(Wd'*Md - Dd*Wd')
So in short, taking the conjugate of the matrix W should resolve your issues.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Number Theory についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!