Chebyshev
The Chebyshev module provides the low-level pieces needed to build spectral calculations:
ChebyshevRescalingSpectralFunctionchebyshev_momentsenergy_cutoff!jackson_dampingjackson_kernelreconstruct_chebyshevspectral_function
Rescaling
chebyshev_moments assumes the input Hamiltonian has already been rescaled into the Chebyshev window [-1, 1].
In practice this means:
- choose a physical center and halfwidth
- shift and rescale the Hamiltonian
- generate moments in the rescaled variable
- 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.ChebyshevRescaling — Type
ChebyshevRescaling(center, halfwidth)Store the affine map between physical frequencies ω and the rescaled Chebyshev coordinate x = (ω - center) / halfwidth.
Fields
center: Physical frequency mapped tox = 0.halfwidth: Positive scale factor mapping the target energy window to[-1, 1].
MPSToolkit.SpectralFunction — Type
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's1-based indexing convention.kernel: Optional damping kernel already resolved to a numeric vector.rescaling:ChebyshevRescalingconverting between physical and rescaled frequencies.
MPSToolkit.chebyshev_moments — Function
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] = μ_0moments[2] = μ_1- ...
Arguments
H: RescaledMPOwhose 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: Iftrue, normalize the starting state before building moments.energy_cutoff: Iftrue, applyenergy_cutoff!after each recursion step.energy_cutoff_sweeps: Number of sweeps used byenergy_cutoff!.krylovdim: Local Krylov subspace dimension used byenergy_cutoff!.window: Allowed rescaled energy window for the cutoff projector.energy_cutoff_tol: Early-stop tolerance for the cutoff sweeps.energy_cutoff_verbose: Iftrue, print per-sweep cutoff diagnostics.
Returns
- A dense
Vector{Float64}storingμ_0, μ_1, ..., μ_{order-1}.
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 HamiltonianMPO.
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: Iftrue, print per-sweep diagnostics.
Returns
- The mutated
psi.
MPSToolkit.jackson_damping — Function
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.
MPSToolkit.jackson_kernel — Function
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 + 1entry stores the Jackson weight for momentμ_n.
MPSToolkit.reconstruct_chebyshev — Function
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 conventionmoments[n + 1] = μ_n.
Keyword Arguments
kernel: Optional damping weights with the same length asmoments.
Returns
- The reconstructed spectral density at
x.
Notes
- The returned value already includes the Chebyshev weight factor
1 / (π * sqrt(1 - x^2)).
MPSToolkit.spectral_function — Function
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 tox = 0.halfwidth: Positive rescaling width.kernel: Kernel specification passed to the internal_resolve_kernelhelper, such as:jackson,nothing, or an explicit weight vector.
Returns
- A
SpectralFunctionobject that can be called on scalars or vectors of frequencies.
References
- Andreas Holzner, Andreas Weichselbaum, Ian P. McCulloch, Ulrich Schollwock, and Jan von Delft, Chebyshev matrix product state approach for spectral functions
- Jad C. Halimeh, Fabian Kolley, and Ian P. McCulloch, Chebyshev matrix product state approach for time evolution