Functions | |
void | GenerateChebyshevMatrix (itype N, DenseMatrix< complex > &M) |
Computes an NxN matrix, where ![]() ![]() ![]() | |
void | ResizeChebyshevMatrix (itype N, DenseMatrix< complex > &M) |
Efficiently resizes an existing Chebyshev polynomial matrix to NxN, using the coefficients already computed. | |
void | GenerateChebyshevEvolutionVector (double time, itype N, DenseVector< complex > &V) |
Computes an N-element vector, where ![]() ![]() ![]() | |
int | ChebyshevPrep (double timestep, double prec, DenseVector< complex > &PowerCoeffs, DenseVector< double > &CoeffsBoundSeq) |
Precomputes the coefficients needed to evolve a state using ChebyshevStep(), for time timestep , with accuracy prec . | |
template<typename T> | |
int | ChebyshevStep (const State &initial, State &final, DenseVector< complex > &PowerCoeffs, DenseVector< double > &CoeffsBoundSeq, const T &Hamiltonian, double E_bound, double prec) |
Transforms the quantum state initial by ![]() final . Requires precomputation by ChebyshevPrep(). | |
template<typename T> | |
int | ChebyshevEvolve (const State &initial, State &final, double time, const T &Hamiltonian, double E_bound, double prec=1e-10) |
Evolves the quantum state initial for a single step of duration time according to Hamiltonian , placing the result in final . | |
template<typename T> | |
int | ChebyshevStepEvolve (const State &initial, State &final, double time, double maxtimestep, const T &Hamiltonian, double E_bound, double prec=1e-10) |
Evolves the quantum state initial ==> final , for duration time , in steps no longer than maxtimestep , according to Hamiltonian . |
|
Computes an NxN matrix, where
The matrix generated by GenerateChebyshevMatrix() represents all the Chebyshev polynomials of order
The coefficients are computed efficiently (in |
|
Efficiently resizes an existing Chebyshev polynomial matrix to NxN, using the coefficients already computed. The structure of the Chebyshev polynomial recursion relation means that:
|
|
Computes an N-element vector, where
Evolving a state vector using the Chebyshev polynomial approximation requires first expanding
The Bessel functions are computed all at once using the Gnu Scientific Library's gsl_sf_bessel_Jn_array() function. |
|
Precomputes the coefficients needed to evolve a state using ChebyshevStep(), for time
ChebyshevPrep() constructs the coefficients of a polynomial in a Hamiltonian
The order of approximation required (N) depends on both
Because the coefficient sequence (
The bounding sequence allows the routine that actually applies |