Re: Polynomial eigenvalue problem

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

```----- Original Message -----
From: "Alan" <info at optioncity.REMOVETHIS.net>
To: mathgroup at smc.vnet.net
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}]

SeedRandom[1]
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
eigenvalues.

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

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

Out[21]=
{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}

Let's compare our results for the linear case:

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

In[23]:=
NSolve[Det[mat]]

Out[23]=
{{lambda -> -1.29964}, {lambda -> -0.97271}, {lambda -> 1.38013}}

In[24]:=
Eigenvalues[{a[0],-a[1]}]

Out[24]=
{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