Compute approximative common eigenvectors basis between two matrices as a function of tolerance
3 次查看(过去 30 天)
显示 更早的评论
SUMMARIZE :
Given 2 matrices A and B that don't commute, I am looking for finding or rather building an approximative common eigenvectors basis X between 2 matrices A and B such as : A X_i = a_i X_i and B X_i = b_i X_i with set (a_i) and (b_i) are the eigen values respectively of A and B. I tried different things to perform this like SVD algorithms on commutator of A*B, Solving Matricial equations to build the eigen common vectors, Pool variance methods but none gives acceptable results. So I wonder if someone could know a method elaborated to approximate this common basis of eigen vectors or simply make suggestions or give tracks. Any help is welcome for this combination of probes.
ISSUE :
I am looking for finding or rather building common eigenvectors matrix X between 2 matrices A and B such as :
AX=aX
with "a" the diagonal matrix corresponding to the eigenvalues
BX=bX
with "b" the diagonal matrix corresponding to the eigenvalues
where A and B are square and diagonalizable matrices.
1) I took a look in a similar post but had not managed to conclude, i.e having valid results when I build the final wanted endomorphism F defined by : F = P D P^-1
2) I have also read the wikipedia topic and this interesting paper but couldn't have to extract methods pretty easy to implement.
3) From maths exchange, one advices to use Singular values Decomposition (SVD) on the commutator [A,B], that is in Matlab doing by :
"If 𝑣 is a common eigenvector, then ‖(𝐴𝐵−𝐵𝐴)𝑣‖=0. The SVD approach gives you a unit-vector 𝑣 that minimizes ‖(𝐴𝐵−𝐵𝐴)𝑣‖ (with the constraint that ‖𝑣‖=1)"
So I extract the approximative eigen vectors V from :
[U,S,V] = svd(A*B-B*A)
4) Is there a way to increase the accuracy to minimize ‖(𝐴𝐵−𝐵𝐴)𝑣‖ as much as possible, I mean for a tolerance as small as possible ?
Are there alternative methods or routines to perform this minimization of commutator combined with the vector 𝑣
, that is ‖(𝐴𝐵−𝐵𝐴)𝑣‖ ?
- What's the difference with singular values decomposition svd
- Which criterion could I apply for a pertinent choice of tolerance value
The 2 matrices to find approximative common eigen vectors matrix are available here :
Anyone could try to apply a function Matlab appropriate to find a basis of common eigen vectors or write a small Matlab script for this ? Even approximative basis would be enough, everything depends of the tolerance that I am ready to accept but currently I don't know how to introduce this tolerance parameter with SVD algorithm.
5) UPDATE : among different methods that I have tried to use, anyone could explain the method of Pool Variance ? If it can be easy to implement. I remember that it is consisted by taking the half of each diagonalised Fisher matrices and sum them to come back after into final Covariance space, i.e by just applying :
Cov = P Fisher_diagonal_sum P^-1
?
With this method, I get interesting results, but from a theorical point of view, impossible for me to justify the principle of this Pool variance matrix (that is, by taking the half of diagonal Fisher matrices values and come back to Covariance) : why the half ?
6) In pooled variance, How to quantify the relative amount of Information between 2 Fisher informations ? : maybe I could then justify this contribtuion of 50% for A and 50% for B matrices
Any suggestion/track/clue help is welcome
回答(2 个)
Matt J
2021-1-22
编辑:Matt J
2021-1-22
rather building an approximative common eigenvectors basis X between 2 matrices A and B such as : A X_i = a_i X_i and B X_i = b_i X_i
If you were to find such an X_i, and if a_i is non-zero, then X_i and b_i/a_i would be a generalized eigenvector and value. So, perhaps you should be looking to eig(A,B) and/or eig(B,A)?
3 个评论
Bjorn Gustavsson
2021-1-22
1, Why do you think that your problem should have a solution?
2, If your matrices have a couple of common eigenvectors, why can't you just look for that subset?
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!