MathGroup Archive 2010

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

Search the Archive

Re: Diagonalizing large matrices

  • To: mathgroup at smc.vnet.net
  • Subject: [mg107193] Re: [mg107146] Diagonalizing large matrices
  • From: Mark McClure <mcmcclur at unca.edu>
  • Date: Fri, 5 Feb 2010 03:22:08 -0500 (EST)
  • References: <201002041125.GAA29739@smc.vnet.net>

On Thu, Feb 4, 2010 at 6:25 AM, Jim Lambaugh <lambaugh at gmail.com> wrote:
> I am in a situation, where I have to diagonalize very large matrices.
> My experience with Mathematica is limited, but what I need is the
> entire set of eigenvalues.
>
> I read that LAPACK is used to find entire sets of eigenvalues, but the
> Mathematica-help does not say much on this subject. So to make a long
> story short: What is the most effective way of finding the entire set
> of eigenvalues (and corresponding eigenvectors) of a very large
> matrix?

If you have a large matrix M with real, floating point entries (such
as 1.0), simply use the Eigensystem command:
{vals,vecs} = Eigensystem[M]

The previous command will store the eigenvalues and eigenvectors in
the variables vals and vecs.

If you are familiar with Lapack, you should be aware that use of
Mathematica is very different.  Lapack is a much lower level tool and
the programmer is expected to know which algorithm to call in certain
situations.  For example, DSTEQR uses a QR algorithm to compute the
eigenvalues of a symmetric, tri-diagonal matrix of doubles - and there
are a zillion such functions.  Mathematica automates the process,
choosing the appropriate Lapack function to call based on the input.

Hope that helps,
Mark McClure


  • Prev by Date: Re: What does & mean?
  • Next by Date: Re: DeleteDuplicates is too slow?
  • Previous by thread: Diagonalizing large matrices
  • Next by thread: Re: Diagonalizing large matrices