Simplifying the Generalized Eigenvalue Problem

412 Views Asked by At

Let $\Sigma_1$, $\Sigma_2$ be symmetric positive-definite real $n\times n$ matrices. We want to solve the generalized eigenvalue problem $$ \Sigma_1V=\Lambda\Sigma_2V, $$ where $\Lambda$ is the generalized eigenvalue matrix and $V$ the generalized eigenvector matrix.

I am particularly interested in computing the eigenvalues. Also, I am looking for a c-friendly solution. I am going to use the GNU Scientific Library (GSL), and thus I don't want to do unnecessary computations. That's why I ask here. Thank you very much in advance!

EDIT

By applying Cholesky decomposition on $\Sigma_2$, we have $\Sigma_2=LL^\top$, where $L$ is a lower triangle matrix. Then, the desired eigenvalues can be found by solving a "simpler" eigenvalue problem. That is, the desired eigenvalues coincide with the eigenvalues of the following matrix $$ L^{-1}\Sigma_1(L^\top)^{-1}. $$

What would be a good programming practice here? Should I first compute $L$ (using Cholesky), and after that conducting the triple multiplication, and finally find the eigenvalues (using a GSL solver)? Or is there any simplifications that would make the total computation cost smaller?