ArnoldiEvolution

Inheritance Diagram

Inheritance diagram of tenpy.linalg.krylov_based.ArnoldiEvolution

Methods

ArnoldiEvolution.__init__(H, psi0, options)

ArnoldiEvolution.iadd_prefactor_other(w, ...)

ArnoldiEvolution.iscale_prefactor(w, scale)

ArnoldiEvolution.run(delta[, normalize])

Compute expm(delta * H).dot(psi0) using Arnoldi.

class tenpy.linalg.krylov_based.ArnoldiEvolution(H, psi0, options)[source]

Bases: Arnoldi

Compute \(\\exp(\\delta H) |\\psi_0\\rangle\) using Arnoldi for non-Hermitian H.

Drop-in replacement for LanczosEvolution when H is not Hermitian. Builds an upper Hessenberg projection of H via full Gram-Schmidt orthogonalization (Arnoldi iteration), then computes the matrix exponential of the small projected matrix via eigendecomposition (numpy.linalg.eig + pointwise scalar exponentials).

Parameters:
  • H – Same as Arnoldi. Note that H need not be Hermitian.

  • psi0 – Same as Arnoldi. Note that H need not be Hermitian.

  • options – Same as Arnoldi. Note that H need not be Hermitian.

Options

config ArnoldiEvolution
option summary

cutoff (from KrylovBased) in KrylovBased

Cutoff to abort if the norm of the new krylov vector is too small. [...]

E_shift (from KrylovBased) in KrylovBased

Shift the energy (=eigenvalues) by that amount *during* the Lanczos run by [...]

E_tol

Inherited but ignored.

min_gap (from KrylovBased) in KrylovBased

Lower cutoff for the gap estimate used in the P_tol criterion.

N_max (from KrylovBased) in KrylovBased

Maximum number of steps to perform.

N_min (from KrylovBased) in KrylovBased

Minimum number of steps to perform.

num_ev

Inherited but ignored.

P_tol (from KrylovBased) in KrylovBased

Tolerance for the error estimate from the Ritz Residual, [...]

reortho (from KrylovBased) in KrylovBased

For poorly conditioned matrices, one can quickly loose orthogonality of the [...]

which

Inherited but ignored.

option E_tol
option which
option num_ev

Inherited but ignored.

delta

Prefactor of H in the exponential.

Type:

float/complex or None

_result_norm

Norm of the result vector.

Type:

float

run(delta, normalize=None)[source]

Compute expm(delta * H).dot(psi0) using Arnoldi.

Parameters:
  • delta (float/complex) – Prefactor of H in the exponential. Note that the complex i is not included.

  • normalize (bool) – Whether to normalize the result. Defaults to False. Unlike LanczosEvolution (which defaults to np.real(delta) == 0), non-Hermitian evolution does not in general preserve the norm, so normalization would strip physically meaningful decay or growth and is off by default.

Returns:

  • psi_f (Array) – Best approximation for expm(delta * H).dot(psi0).

  • N (int) – Krylov space dimension used.