# ImaginaryMcLachlanPrinciple

*class *`qiskit.algorithms.time_evolvers.variational.ImaginaryMcLachlanPrinciple(qgt=None, gradient=None)`

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

`evolution_gradient(hamiltonian, ansatz, param_values, gradient_params=None)`

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