Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Find smallest eigenvalues in mathematica

1,650 views
Skip to first unread message

thunk

unread,
Feb 14, 2008, 1:03:36 AM2/14/08
to
Eigenvalues[m, -k] gives the k that are smallest in absolute value,Here m is large sparse matrix. But I want to get the smallest eigenvalues,not in the meaning of absolute value,how can I achieve this aim directly,excluding the method that find the smallest eigenvalues in absolute value and select out the smallest values,for the method would waste many computational cost.How could we use Lanczos method according to Mathematica?

dh

unread,
Feb 14, 2008, 6:34:39 AM2/14/08
to

Hi,

imagine that you subtract asome number from your eigenvalues so that all

Eigenvalues are negative. Then you can use Eigenvalues[..,1] to get the

smallest. This can be achieved by subtracting n IdentityMatrix from your

matrix, where n is larger than you largest positive eigenvalue.

Therefore, the following gives you the samllest eigenvalue:

n+Eigenvalues[m- n IdentityMatrix[dimension],1]

hope this helps, Daniel

Roman

unread,
Feb 14, 2008, 6:50:05 AM2/14/08
to
Mathematica has the ARPACK library built in ("Arnoldi" and "Lanczos"
are somewhat synonymous), and all (?) the options for that library
apply. If your matrix is Hermitian, so that you know that the
eigenvalues are all real, then you can use the real part as a
criterion for computing the smallest one. Let A be your sparse matrix,
containing only machine-precision real numbers. Then calling

-Eigenvalues[-A, 1, Method -> {Arnoldi, MaxIterations -> 10^5,
Criteria -> RealPart}]

will compute the largest eigenvalue of -A (by real part), which is the
smallest eigenvalue of A. Unfortunately, the Mathematica documentation
on the subject of sparse-matrix diagonalization is very sparse.

Roman.

thunk

unread,
Feb 19, 2008, 1:48:38 AM2/19/08
to
Thanks you sincerely,your answers are very helpful to me.

0 new messages