Solve Generalized Eigenvalue Problem in Numpy

linear-algebra, numpy, python, scipy

Solution

For real symmetric or complex Hermitian dense matrices, you can use `scipy.linalg.eigh()` to solve a generalized eigenvalue problem. To avoid extracting all the eigenvalues you can specify only the desired ones by using `subset_by_index`:

from scipy.linalg import eigh

eigvals, eigvecs = eigh(A, B, eigvals_only=False, subset_by_index=[0, 1, 2])

One could use `eigvals_only=True` to obtain only the eigenvalues.

Problem

I am looking to solve a problem of the type: `Aw = xBw` where `x` is a scalar (eigenvalue), `w` is an eigenvector, and `A` and `B` are symmetric, square numpy matrices of equal dimension. I should be able to find `d` x/w pairs if `A` and `B` are `d x d`. How would I solve this in numpy? I was looking in the Scipy docs and not finding anything like what I wanted.

Original source

Related problems