pub fn eigen<T: ConjugateScalar>(
a: &CausalTensorTrainOperator<T>,
max_rank: usize,
config: &SolveConfig<<T as ConjugateScalar>::Real>,
) -> Result<(T, CausalTensorTrain<T>), CausalTensorError>Expand description
Computes the lowest eigenpair (λ, v) of a Hermitian tensor-train operator A by the
DMRG3S algorithm: a single-site DMRG sweep (each site solves the local single-site eigenproblem
for the smallest Rayleigh quotient) combined with subspace expansion — the bond dimension is
grown rank-adaptively by enriching v with the projected residual A·v − λ·v (the same
residual-enrichment engine used by linear), seeded small and capped at max_rank.
Each site is solved in mixed-canonical gauge: the state is canonicalize_at(k)-ed before the
local solve so the environment is orthonormal and the single-site problem is a standard Hermitian
eigenproblem H z = λ z (solved by the cyclic-Jacobi sym_eig, which uses complex Givens
similarity for complex scalars and reduces to the real symmetric Jacobi for real ones).
A must be (numerically) Hermitian — the effective operator is Hermitian-symmetrized before each
local solve. The returned λ is real (returned as T) and the smallest (most negative) eigenvalue.
Reference: C. Hubig, I. P. McCulloch, U. Schollwöck, and F. A. Wolf, “Strictly single-site DMRG algorithm with subspace expansion,” Phys. Rev. B 91, 155115 (2015). https://doi.org/10.1103/PhysRevB.91.155115 (arXiv:1501.05504).
§Errors
CausalTensorError::ShapeMismatchifAis not square (in_dims != out_dims).CausalTensorError::SweepDidNotConvergeif the relative residual stays abovetol.