Chebyshev

The Chebyshev module provides the low-level pieces needed to build spectral calculations:

  • ChebyshevRescaling
  • SpectralFunction
  • chebyshev_moments
  • energy_cutoff!
  • jackson_damping
  • jackson_kernel
  • reconstruct_chebyshev
  • spectral_function

Rescaling

chebyshev_moments assumes the input Hamiltonian has already been rescaled into the Chebyshev window [-1, 1].

In practice this means:

  1. choose a physical center and halfwidth
  2. shift and rescale the Hamiltonian
  3. generate moments in the rescaled variable
  4. reconstruct the physical spectrum using spectral_function

Minimal Workflow

using MPSToolkit

moments = chebyshev_moments(
  h_rescaled,
  psi;
  order=80,
  maxdim=64,
  cutoff=1e-12,
)

spectrum = spectral_function(moments; center=center, halfwidth=halfwidth)

The energy_cutoff=true path is most useful when the relevant spectral window is narrow compared with the full rescaled interval and the recursion is compression-sensitive.

Energy-Window Cutoff

energy_cutoff! provides a standalone CheMPS-style helper for projecting recursion vectors back into a target energy window. The integrated chebyshev_moments(...; energy_cutoff=true, ...) path is most relevant when:

  • the target spectral window is narrower than the full rescaled interval
  • the recursion order is high
  • bond-dimension limits make the recursion compression-sensitive

For a worked example, see the Chebyshev notebook links on Examples.

moments = chebyshev_moments(
  h_rescaled,
  psi;
  order=120,
  maxdim=32,
  cutoff=1e-12,
  energy_cutoff=true,
  energy_cutoff_sweeps=4,
  krylovdim=20,
  window=0.35,
)

API

MPSToolkit.ChebyshevRescalingType
ChebyshevRescaling(center, halfwidth)

Store the affine map between physical frequencies ω and the rescaled Chebyshev coordinate x = (ω - center) / halfwidth.

Fields

  • center: Physical frequency mapped to x = 0.
  • halfwidth: Positive scale factor mapping the target energy window to [-1, 1].
source
MPSToolkit.SpectralFunctionType
SpectralFunction(moments, kernel, rescaling)

Represent a reconstructed spectral function from Chebyshev moments. moments[n + 1] stores the moment μ_n.

Fields

  • moments: Stored Chebyshev moments in Julia's 1-based indexing convention.
  • kernel: Optional damping kernel already resolved to a numeric vector.
  • rescaling: ChebyshevRescaling converting between physical and rescaled frequencies.
source
MPSToolkit.chebyshev_momentsFunction
chebyshev_moments(H, psi;
  order,
  maxdim=32,
  cutoff=1e-12,
  normalize_initial=true,
  energy_cutoff=false,
  energy_cutoff_sweeps=5,
  krylovdim=30,
  window=1.0,
  energy_cutoff_tol=1e-12,
  energy_cutoff_verbose=false,
)

Compute Chebyshev moments μ_n = ⟨ψ|T_n(H)|ψ⟩ for a finite MPO and MPS.

H is assumed to already be rescaled so its spectrum lies in [-1, 1]. The returned vector is stored in the natural Julia order:

  • moments[1] = μ_0
  • moments[2] = μ_1
  • ...

Arguments

  • H: Rescaled MPO whose spectrum should already lie in [-1, 1].
  • psi: Initial state used to seed the Chebyshev recursion.

Keyword Arguments

  • order: Number of moments to compute.
  • maxdim: Bond dimension cap used during MPO application and vector addition.
  • cutoff: Truncation cutoff used during MPO application and vector addition.
  • normalize_initial: If true, normalize the starting state before building moments.
  • energy_cutoff: If true, apply energy_cutoff! after each recursion step.
  • energy_cutoff_sweeps: Number of sweeps used by energy_cutoff!.
  • krylovdim: Local Krylov subspace dimension used by energy_cutoff!.
  • window: Allowed rescaled energy window for the cutoff projector.
  • energy_cutoff_tol: Early-stop tolerance for the cutoff sweeps.
  • energy_cutoff_verbose: If true, print per-sweep cutoff diagnostics.

Returns

  • A dense Vector{Float64} storing μ_0, μ_1, ..., μ_{order-1}.
source
MPSToolkit.energy_cutoff!Function
energy_cutoff!(psi, h; sweeps=5, krylovdim=30, window=1.0, tol=1e-12, verbose=false)

Apply the standalone CheMPS-style energy-window projection to an MPS with respect to the effective local problem induced by the MPO h. This is intended for Chebyshev vectors after the Hamiltonian has already been rescaled into the target Chebyshev window.

Arguments

  • psi: State to mutate in place.
  • h: Rescaled Hamiltonian MPO.

Keyword Arguments

  • sweeps: Maximum number of left-right/right-left cutoff sweeps.
  • krylovdim: Local Krylov subspace dimension used at each site update.
  • window: Allowed rescaled energy window.
  • tol: Early-stop tolerance on the accumulated sweep error estimate.
  • verbose: If true, print per-sweep diagnostics.

Returns

  • The mutated psi.
source
MPSToolkit.jackson_dampingFunction
jackson_damping(n, order)

Return the Jackson damping factor for Chebyshev index n = 0, 1, ..., order - 1.

Arguments

  • n: Zero-based Chebyshev index.
  • order: Total number of moments in the truncated expansion.

Returns

  • The scalar Jackson damping factor for index n.
source
MPSToolkit.jackson_kernelFunction
jackson_kernel(order)

Return the full Jackson damping kernel for a Chebyshev series of length order.

Arguments

  • order: Number of retained Chebyshev moments.

Returns

  • A dense vector whose n + 1 entry stores the Jackson weight for moment μ_n.
source
MPSToolkit.reconstruct_chebyshevFunction
reconstruct_chebyshev(x, moments; kernel=nothing)

Evaluate the Chebyshev reconstruction at rescaled frequency x ∈ (-1, 1). If kernel is omitted, the raw truncated series is used.

Arguments

  • x: Rescaled Chebyshev coordinate in (-1, 1).
  • moments: Moment vector in the convention moments[n + 1] = μ_n.

Keyword Arguments

  • kernel: Optional damping weights with the same length as moments.

Returns

  • The reconstructed spectral density at x.

Notes

  • The returned value already includes the Chebyshev weight factor 1 / (π * sqrt(1 - x^2)).
source
MPSToolkit.spectral_functionFunction
spectral_function(moments; center=0.0, halfwidth=1.0, kernel=:jackson)

Build a callable SpectralFunction from a Chebyshev moment sequence.

Arguments

  • moments: Vector storing μ_0, μ_1, ..., μ_{N-1}.

Keyword Arguments

  • center: Physical frequency mapped to x = 0.
  • halfwidth: Positive rescaling width.
  • kernel: Kernel specification passed to the internal _resolve_kernel helper, such as :jackson, nothing, or an explicit weight vector.

Returns

  • A SpectralFunction object that can be called on scalars or vectors of frequencies.
source

References