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
- References:
- Polynomial eigenvalue problem
- From: "Alan" <info@optioncity.REMOVETHIS.net>
- Polynomial eigenvalue problem