Skip to main content

iterative_eigensolver

Overloads

NameDescription
iterative_eigensolver(const RealMatrix op, integer nev) -> ListIterative eigensolver for matrices.
iterative_eigensolver(const Operator op, integer N, integer nev, const Map opts) -> ListIterative eigensolver for operators.
iterative_eigensolver(const ComplexMatrix op, integer nev) -> ListIterative eigensolver for matrices.
iterative_eigensolver(const Operator op, integer N, integer nev) -> ListIterative eigensolver for operators.
iterative_eigensolver(const RealMatrix op, integer nev, const Map opts) -> ListIterative eigensolver for matrices.
iterative_eigensolver(const ComplexMatrix op, integer nev, const Map opts) -> ListIterative eigensolver for matrices.

iterative_eigensolver(const RealMatrix op, integer nev) -> List

Iterative eigensolver for matrices.

Parameters

  • op: The matrix to compute the eigenvalues and eigenvectors of.
  • nev: The number of eigenvalues and eigenvectors to compute.

Example


var N = 6
var H = Z(0) * Z(N-1) + 0.4 * X(0) + 0.4 * X(N-1)
for(var i = 0; i<N-1; ++i)
{
H += Z(i) * Z(i+1) + 0.4 * X(i)
}
var H_mat = matrix(H)
var results = iterative_eigensolver(H_mat, 3)
var eval = results[0]
var evec = results[1]
is_approx(H * evec, evec * eval.as_diagonal(), 1e-8)

iterative_eigensolver(const Operator op, integer N, integer nev, const Map opts) -> List

Iterative eigensolver for operators.

Options are provided as a map of option names to their values.

Parameters

  • op: The operator to compute the eigenvalues and eigenvectors of.
  • N: The dimension of the operator.
  • nev: The number of eigenvalues and eigenvectors to compute.
  • opts: Options for the eigensolver.
    • is_hermitian (bool): Whether the operator is Hermitian (default: false). If true, Hermitian-specific algorithms are used, which can improve performance.
    • is_real (bool): Whether the operator is real (default: false). If true, real-valued arithmetic is used, which can improve performance.
    • tolerance (real): The convergence tolerance (default: ~1e-13).
    • spectrum (SpectrumItem): The target spectrum for the eigensolver (default: spectrum.smallest_real).
    • max_iterations (integer): The maximum number of iterations (default: 1000). If convergence issues are encountered, increasing this value may help.
    • krylov_dimension (integer): The dimension of the Krylov subspace (default: 2 * nev + 2). This parameter must be larger than nev. If convergence issues are encountered, increasing this value may help.

Example


var N = 6
var H = Z(0) * Z(N-1) + 0.4 * X(0) + 0.4 * X(N-1)
for(var i = 0; i<N-1; ++i)
{
H += Z(i) * Z(i+1) + 0.4 * X(i)
}
var results = iterative_eigensolver(H, 2**N, 3, ["is_hermitian" : true, "is_real" : true])
var eval = results[0]
var evec = results[1]
is_approx(H * evec, evec * eval.as_diagonal(), 1e-8)

iterative_eigensolver(const ComplexMatrix op, integer nev) -> List

Iterative eigensolver for matrices.

Parameters

  • op: The matrix to compute the eigenvalues and eigenvectors of.
  • nev: The number of eigenvalues and eigenvectors to compute.

Example


var N = 6
var H = Z(0) * Z(N-1) + 0.4 * X(0) + 0.4 * X(N-1)
for(var i = 0; i<N-1; ++i)
{
H += Z(i) * Z(i+1) + 0.4 * X(i)
}
var H_mat = matrix(H)
var results = iterative_eigensolver(H_mat, 3)
var eval = results[0]
var evec = results[1]
is_approx(H * evec, evec * eval.as_diagonal(), 1e-8)

iterative_eigensolver(const Operator op, integer N, integer nev) -> List

Iterative eigensolver for operators.

The operator is assumed to be non-Hermitian and complex-valued by default. If the operator is known to be Hermitian or real-valued, setting the appropriate options can improve performance.

Parameters

  • op: The operator to compute the eigenvalues and eigenvectors of.
  • N: The dimension of the operator.
  • nev: The number of eigenvalues and eigenvectors to compute.

Example


var N = 6
var H = Z(0) * Z(N-1) + 0.4 * X(0) + 0.4 * X(N-1)
for(var i = 0; i<N-1; ++i)
{
H += Z(i) * Z(i+1) + 0.4 * X(i)
}
var results = iterative_eigensolver(H, 2**N, 3)
var eval = results[0]
var evec = results[1]
is_approx(H * evec, evec * eval.as_diagonal(), 1e-8)

iterative_eigensolver(const RealMatrix op, integer nev, const Map opts) -> List

Iterative eigensolver for matrices.

Options are provided as a map of option names to their values.

Parameters

  • op: The matrix to compute the eigenvalues and eigenvectors of.
  • nev: The number of eigenvalues and eigenvectors to compute.
  • opts: Options for the eigensolver.
    • is_hermitian (bool): Whether the operator is Hermitian (default: false). If true, Hermitian-specific algorithms are used, which can improve performance.
    • is_real (bool): Whether the operator is real (default: false). If true, real-valued arithmetic is used, which can improve performance.
    • tolerance (real): The convergence tolerance (default: ~1e-13).
    • spectrum (SpectrumItem): The target spectrum for the eigensolver (default: spectrum.smallest_real).
    • max_iterations (integer): The maximum number of iterations (default: 1000). If convergence issues are encountered, increasing this value may help.
    • krylov_dimension (integer): The dimension of the Krylov subspace (default: 2 * nev + 2). This parameter must be larger than nev. If convergence issues are encountered, increasing this value may help.

Example


var N = 6
var H = Z(0) * Z(N-1) + 0.4 * X(0) + 0.4 * X(N-1)
for(var i = 0; i<N-1; ++i)
{
H += Z(i) * Z(i+1) + 0.4 * X(i)
}
var H_mat = matrix(H)
var results = iterative_eigensolver(H_mat, 3, ["is_hermitian" : true, "is_real" : true])
var eval = results[0]
var evec = results[1]
is_approx(H * evec, evec * eval.as_diagonal(), 1e-8)

iterative_eigensolver(const ComplexMatrix op, integer nev, const Map opts) -> List

Iterative eigensolver for matrices.

Options are provided as a map of option names to their values.

Parameters

  • op: The matrix to compute the eigenvalues and eigenvectors of.
  • nev: The number of eigenvalues and eigenvectors to compute.
  • opts: Options for the eigensolver.
    • is_hermitian (bool): Whether the operator is Hermitian (default: false). If true, Hermitian-specific algorithms are used, which can improve performance.
    • is_real (bool): Whether the operator is real (default: false). If true, real-valued arithmetic is used, which can improve performance.
    • tolerance (real): The convergence tolerance (default: ~1e-13).
    • spectrum (SpectrumItem): The target spectrum for the eigensolver (default: spectrum.smallest_real).
    • max_iterations (integer): The maximum number of iterations (default: 1000). If convergence issues are encountered, increasing this value may help.
    • krylov_dimension (integer): The dimension of the Krylov subspace (default: 2 * nev + 2). This parameter must be larger than nev. If convergence issues are encountered, increasing this value may help.

Example


var N = 6
var H = Z(0) * Z(N-1) + 0.4 * X(0) + 0.4 * X(N-1)
for(var i = 0; i<N-1; ++i)
{
H += Z(i) * Z(i+1) + 0.4 * X(i)
}
var H_mat = matrix(H)
var results = iterative_eigensolver(H_mat, 3, ["is_hermitian" : true, "is_real" : true])
var eval = results[0]
var evec = results[1]
is_approx(H * evec, evec * eval.as_diagonal(), 1e-8)