Unable to find out left eigen vectors of symbolic matrix
4 次查看(过去 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!