MATLAB Answers

Polynomial eigenvalue problems as linear eigenvalue problems and function 'polyeig'

3 views (last 30 days)
Dear all,
I have a rather simple fundamental question regarding the function 'polyeig' for the solution of polynomial eigenvalue problems. This function requires the use of full matrices. Since polynomial eigenvalue problems can be formulated as linear eigenvalue problems, it would be great to exploit the sparsity of the matrices at hand - in my case matrices are big (20000x20000) and sparse.
Is there a built-in way to solve polynomial eigenvalue problems by using just sparse matrices?
Best wishes,
Domenico Tallarico


Sign in to comment.

Accepted Answer

Chidvi Modala
Chidvi Modala on 23 Jan 2020
You can use eigs function to calculate the eigenvectors of a sparse matrix, or to calculate the eigenvalues of a sparse matrix that is not real and symmetric.
But there is no built-in way of solving polynomial eigenvalue problem using sparse matrices in MATLAB.
Since polyeig is written in MATLAB code, you can use "edit polyeig" command and copy and modify that code to allow for sparse inputs (e.g., replace eye(np) with speye(np) and zeros(nB) with sparse(nB, nB)). The call to eig on the two "big matrices" A and B for the dense case would become a call to eigs with the sparse matrices A and B, this would only compute a range of the eigenvalues, and the rest of the code would need to be modified to loop over that range of eigenvalues, instead of looping over all eigenvalues as it currently does.


Domenico Tallarico
Domenico Tallarico on 23 Jan 2020
Thank you very much for your reply - what you suggest is very sensible. I'll go trat road and keep you posted.
Best wishes,
Steven Lord
Steven Lord on 23 Jan 2020
DON'T edit the built-in polyeig function. If you want to use it as the basis for your own sparse polynomial eigenvalue problem solver, make a copy of polyeig.m under a new name in a directory that is on the MATLAB path but not under matlabroot and edit that copy.

Sign in to comment.

More Answers (0)

Sign in to answer this question.

Translated by