Computes eigenvalues only of a real symmetric or complex Hermitian matrix selected by bounds.


ve = lapeighb(x, vl, vu, abstol)
  • x (NxN matrix) – real symmetric or complex Hermitian.
  • vl (scalar) – lower bound of the interval to be searched for eigenvalues.
  • vu (scalar) – upper bound of the interval to be searched for eigenvalues; vu must be greater than vl.
  • 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.

ve (Mx1 vector) – eigenvalues, where M is the number of eigenvalues on the half open interval [vl, vu]. If no eigenvalues are found then ve is a scalar missing value.


// Define x matrix
x = { 5 2 1,
      2 6 2,
      1 2 9 };

// Lower bound of interval to be searched
vl = 5;

// Upper bound of interval to be searched
vu = 10;

// Find eigenvalues in the range vl to vu
ve = lapeighb(x, vl, vu, 1e-15);

// Print eigenvalues
print ve;

The code above returns:



lapeighb() computes eigenvalues only which are found on the half open interval \([vl, vu]\). To find eigenvalues within a specified range of indices see lapeighi(). For eigenvectors see lapeighvi(), or lapeighvb(). lapeighb() 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 lapeighvi(), lapeighvb()