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

9 ビュー (過去 30 日間)
Qingqing Zhao
Qingqing Zhao 2019 年 6 月 12 日
編集済み: David Goodmanson 2019 年 6 月 13 日
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

回答 (1 件)

Christine Tobler
Christine Tobler 2019 年 6 月 12 日
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 件のコメント
Qingqing Zhao
Qingqing Zhao 2019 年 6 月 12 日
編集済み: Qingqing Zhao 2019 年 6 月 12 日
I see. Thanks, David and Christine!
It's really helpful!
David Goodmanson
David Goodmanson 2019 年 6 月 13 日
編集済み: David Goodmanson 2019 年 6 月 13 日
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeEigenvalues についてさらに検索

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by