ImaginaryMcLachlanPrinciple#

class ImaginaryMcLachlanPrinciple(qgt=None, gradient=None)[source]#

Bases: ImaginaryVariationalPrinciple

Class for an Imaginary McLachlan’s Variational Principle. It aims to minimize the distance between both sides of the Wick-rotated Schrödinger equation with a quantum state given as a parametrized trial state. The principle leads to a system of linear equations handled by a linear solver. The imaginary variant means that we consider imaginary time dynamics.

Parameters:
  • qgt (BaseQGT | None) – Instance of a the GQT class used to compute the QFI. If None provided, LinCombQGT is used.

  • gradient (BaseEstimatorGradient | None) – Instance of a class used to compute the state gradient. If None provided, LinCombEstimatorGradient is used.

Raises:

AlgorithmError – If the gradient instance does not contain an estimator.

Methods

evolution_gradient(hamiltonian, ansatz, param_values, gradient_params=None)[source]#

Calculates an evolution gradient according to the rules of this variational principle.

Parameters:
  • hamiltonian (BaseOperator) – Operator used for Variational Quantum Time Evolution.

  • ansatz (QuantumCircuit) – Quantum state in the form of a parametrized quantum circuit.

  • param_values (Sequence[float]) – Values of parameters to be bound.

  • gradient_params (Sequence[Parameter] | None) – List of parameters with respect to which gradients should be computed. If None given, gradients w.r.t. all parameters will be computed.

Returns:

An evolution gradient.

Raises:

AlgorithmError – If a gradient job fails.

Return type:

np.ndarray