compute eigenvalues numerically



Andres Cimmarusti wrote:
> Dear maxima users,
>
> I've been working on some calculations that eventually lead to a 5x5
> matrix, whose components can be complex. The next step is to calculate
> the eigenvalues and possibly the eigenvectors.
>
> The built-in maxima functions: eigenvalues and eigenvectors
> immediately fail, even when the matrix has all real components. It
> says "solve is unable to find the roots of the characteristic
> polynomial".
>
> I looked at "dgeev" which uses lapack, and it worked superbly when the
> matrix components are real, but gave me errors when they were complex,
> as expected. Sadly dgeev only works for integers and floating point.
>
> Is there any other tool/function that will compute these things
> numerically? I deally I would want to later plot each eigenvalue as a
> function of one or two parameters.
> Perhaps maxima is not the appropriate tool to do this anymore (my
> original hope was to compute things analytically, but that's pretty
> much out the window now).. care to suggest a good way to go?
>

If the matrix is symmetric you can use the Jacobi procedure, eigens_by_jacobi
which is quite general. Otherwise you have dgeev which will work OK for
matrices up to 100x100, roughly. If you have very big matrices, like
1000x1000 it may become very difficult. Small matrices like you are describing
should be trivial. However if you expect symbolic answers you cannot go
further than 4x4 in general, and even then you must be extra lucky to get
something. I have spent enormous time to get answers with a 4x4 matrix
(related to the Lax pair for the Kowalevski top) using maple, and still in
that case the characteristic polynomial is biquadratic, so it should be easy.
Symbolic programs become very awkward as soon as you have square roots, so
more complicated stuff is frequently out of question. In fact in such cases,
computation by hand is frequently better performing. If on the other hand the
computation is rational, then symbolic program can do thaings you will never
dream doing by hand.


-- 
Michel Talon