lapeighvi#
Purpose#
Computes selected eigenvalues and eigenvectors of a real symmetric or complex Hermitian matrix.
Format#
- { ve, va } = lapeighvi(x, il, iu, abstol)#
- Parameters:
x (NxN matrix) – real symmetric or complex Hermitian.
il (scalar) – index of the smallest desired eigenvalue ranking them from smallest to largest.
iu (scalar) – index of the largest desired eigenvalue, iu must be greater than il.
abstol (scalar) – the absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval \([a, b]\) of width less than or equal to \(abstol + EPS*max(|a|, |b|)\), where EPS is machine precision. If abstol is less than or equal to zero, then \(EPS*||T||\) will be used in its place, where T is the tridiagonal matrix obtained by reducing the input matrix to tridiagonal form.
- Returns:
ve ((iu-il+1)x1 vector) – eigenvalues.
va (Nx(iu-il+1) matrix) – eigenvectors.
Examples#
// Assign x
x = { 5 2 1,
2 6 2,
1 2 9 };
// Index of smallest desired eigenvalue
il = 2;
// Index of largest desired eigenvalue
iu = 3;
// Compute eigenvalues with indices between
// il and iu and the corresponding eigenvectors
{ ve, va } = lapeighvi(x, il, iu, 0);
print "ve = " ve;
print "va = " va;
ve =
6.0000
10.6056
va =
-0.5774 0.3197
-0.5774 0.4908
0.5774 0.8105
Remarks#
lapeighvi()
computes \(iu-il+1\) eigenvalues and eigenvectors given a range of
indices, i.e., the ith to jth eigenvalues, ranking them from smallest to
largest. To find eigenvalues and eigenvectors within a specified range
see lapeighvb()
. lapeighvi()
is based on the LAPACK drivers DSYEVX and
ZHEEVX. Further documentation of these functions may be found in the
LAPACK User’s Guide.
See also
Functions lapeighvb()
, lapeighb()