Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Polynomial eigenvalue problem

  • To: mathgroup at
  • Subject: [mg58725] Re: [mg58699] Polynomial eigenvalue problem
  • From: "Carl K. Woll" <carl at>
  • Date: Fri, 15 Jul 2005 14:14:07 -0400 (EDT)
  • References: <>
  • Sender: owner-wri-mathgroup at

----- Original Message ----- 
From: "Alan" <info at>
To: mathgroup at
Subject: [mg58725] [mg58699] Polynomial eigenvalue problem

> Does anyone know a Mathematica solution
> for the polynomial eigenvalue problem (PEP)?
> The PEP problem of order p . N is:
> Find the eigenvalues lambda, and eigenvectors v (each an N-vector) that
> solve
> (A_0 + lambda A_1 + lambda^2 A_2 + ... + lambda^p A_p) x = 0,
> where:
> p is a given integer,
> each coefficients A_i is a given N x N (real or complex) square matrix.
> There are p . N solution pairs (lambda, x) if the problem is not 
> ill-posed.
> If both A_0 and A_p are singular the problem is potentially ill-posed.
> Thanks for any help,
> alan

In version 5, the linear problem can be directly solved using Eigensystem if 
A_0 is nonsingular:

Eigensystem[{A_0, -A_1}]

For higher order polynomials, one idea is to proceed the same way as one 
does with the usual eigenvalue problem. First some test data:

randmatrix[n_] := Table[Random[], {n}, {n}]

a[0] = randmatrix[3];
a[1] = randmatrix[3];
a[2] = randmatrix[3];
mat = a[0] + lambda a[1] + lambda^2 a[2];

Get the eigenvalues by setting determinant to zero:

eigs = Sort[NSolve[Det[mat]]];

Get corresponding eigenvectors by using NullSpace:

eigvecs = Join @@ NullSpace /@ (mat /. Union[eigs]);

The Sort and Union commands are there in case there are repeated 

Let's check that our eigenvalues and eigenvectors satisfy your equation:

Table[(mat/.eigs[[i]]) . eigvecs[[i]], {i,Length[eigs]}]//Chop

{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}

Let's compare our results for the linear case:

mat = a[0] + lambda a[1];


{{lambda -> -1.29964}, {lambda -> -0.97271}, {lambda -> 1.38013}}


{1.38013, -1.29964, -0.97271}

Carl Woll
Wolfram Research 

  • Prev by Date: Re: How to display dates in plots
  • Next by Date: Re: Comparison of Mathematica on Various Computers
  • Previous by thread: Polynomial eigenvalue problem
  • Next by thread: Re: Polynomial eigenvalue problem