generalized eigen-problom, complex non-symmetric matrix, how to find orthogonal eigenvectors

9 vues (au cours des 30 derniers jours)
I want to solve eigen problem
with normalization condition
My code is
[U,D] = eig(B\A)
[W,D2] = eig(B.'\A.')
I use some code to rank the eigenvalue and shift the eigenvector in U and W accrodingly.
say now we have U_new, W_new
is not diagonal, in fact it's almost diagonal with some non-diagonal elements when two eigenvector share same eigenvalue.
What should i do to get

Réponses (1)

Christine Tobler
Christine Tobler le 12 Juin 2019
There's an easier way to compute both U and W:
[U, D, W] = eig(A, B);
This will make sure that the eigenvectors U(:, i) and V(:, i) belong together. It's also going to be more accurate because B does not need to be inverted.
I'm not sure that this will satisfy your requirement that W'*A*U is diagonal, though. I tried to construct an example matrix, but couldn't find one where it wasn't diagonal, but I couldn't find a clear statement that this will always be the case, either.
  6 commentaires
Qingqing Zhao
Qingqing Zhao le 12 Juin 2019
Modifié(e) : Qingqing Zhao le 12 Juin 2019
I see. Thanks, David and Christine!
It's really helpful!
David Goodmanson
David Goodmanson le 13 Juin 2019
Modifié(e) : David Goodmanson le 13 Juin 2019
Hi Christine & QZ,
As for computing Wt instead of W' in eig, let
[U1 D1 W1] = eig(conj(A), conj(B))
and take
U = conj(U1)
D = conj(D1)
W = W1
Then if you do the algebra I believe you get
A*U = B*U*D
Wt*A = D*Wt*B

Connectez-vous pour commenter.

Catégories

En savoir plus sur Eigenvalues dans Help Center et File Exchange

Produits


Version

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by