# Simplifying the Generalized Eigenvalue Problem

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?

• Why does not gsl_eigen_gensymm suit your goals? – uranix Jun 16 '15 at 17:42
• Well, it does suit indeed! I only found out a few hours after asking... I should have been looking for that a bit more carefully and patiently... Thanks @uranix! – nullgeppetto Jun 16 '15 at 19:29