From: spellucci@mathematik.th-darmstadt.de (Peter Spellucci) Newsgroups: sci.math.num-analysis Subject: Re: Eigen value decomposition Date: 25 Nov 1997 10:04:00 GMT In article , Johan Schalkwyk writes: |> |> I am search on information regarding computing eigen vectors |> for really large matrices (>1000x1000). It seems like normal |> methods are not numerically accurate. I also read that some |> of the iterative methods might only produce accurate |> eigen vectors for the first or second eigenvector. |> this is not true. If your matrices are dense and you need the full decomposition, nothing than QR-based codes will help, and they do a good job, but clearly the complexity is about cons*n**3, with cons varying from 10 up to 100 say. or itetrative methods, Lanczos , Arnoldi and subspace iteration work quite well, if properly implemented, but usually these can be applied for up to 30 modes at most (because of numerical loss of orthogonality) for codes see LAPACK in netlib (dense), ftp://ftp.caam.rice.edu/pub/software/ARPACK/ http://www.netlib.org/linalg/qmr/ Aztec in http://www.cs.sandia.gov/HPCCIT/aztec.html for references the book of Youcef Saad: numerical methods for large eigenvalue problems, appeared with Manchester Univ Press hope this helps peter ============================================================================== From: Bernd Pfitzinger Newsgroups: sci.math.num-analysis Subject: Re: Eigen value decomposition Date: 26 Nov 1997 08:29:36 +0100 Hello To diagonalize a dense 1000x1000 matrix (solve the eigenvalue or generalized eigenvalue problem) I have very good experiences with EISPACK/LAPACK. These packages need the whole matrix to be stored in the computers memory. Sooner or later this may be the limiting factor - as in my case. With 2000 M RAM it's not possible to go much beyond 10000x10000. There are several ways to speed up the calculation: 1) If you don't need all eigenvalues/-vectors use a package capable of computing only the relevant ones (usually smallest/largest or in a region) 2) Use a vector computer. These are specialized machines at least 100 times faster than an ordinary PC (workstation). 3) Parallelize. Either do several independent diagonalisations on different machines or use ScaLAPACK for a parallelized diagonalisation. References: http://www.netlib.org/lapack http://www.netlib.org/scalapack There is an example driver routine for Scalapack (e.g. generalized eigenvalue problem) given there. If you need more help I have an almost ready to run driver for the generalized eigenvalue problem. It takes two given matrices, writes them to disk in block cyclic distribution then you can start scalapack (typically on parallel computers, NOT on workstation clusters). Yours Bernd Pfitzinger