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.
I am looking for finding or rather building common eigenvectors matrix X between 2 matrices A and B such as :
with "a" the diagonal matrix corresponding to the eigenvalues
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
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 :
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 ‖(𝐴𝐵−𝐵𝐴)𝑣‖ ?
I saw there is another function called rref which can accept a tolerance parameter but :
- 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