---
title: ImaginaryMcLachlanPrinciple (v0.46)
description: API reference for qiskit.algorithms.time_evolvers.variational.ImaginaryMcLachlanPrinciple in qiskit v0.46
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/0.46/qiskit.algorithms.time_evolvers.variational.ImaginaryMcLachlanPrinciple
---

# ImaginaryMcLachlanPrinciple

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

[GitHub](https://github.com/qiskit/qiskit/tree/stable/0.46/qiskit/algorithms/time_evolvers/variational/variational_principles/imaginary_mc_lachlan_principle.py)

Bases: [`ImaginaryVariationalPrinciple`](/docs/api/qiskit/0.46/qiskit.algorithms.time_evolvers.variational.ImaginaryVariationalPrinciple "qiskit.algorithms.time_evolvers.variational.variational_principles.imaginary_variational_principle.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*](/docs/api/qiskit/0.46/qiskit.algorithms.gradients.BaseQGT "qiskit.algorithms.gradients.BaseQGT") *| None*) – Instance of a the GQT class used to compute the QFI. If `None` provided, `LinCombQGT` is used.
- **gradient** ([*BaseEstimatorGradient*](/docs/api/qiskit/0.46/qiskit.algorithms.gradients.BaseEstimatorGradient "qiskit.algorithms.gradients.BaseEstimatorGradient") *| None*) – Instance of a class used to compute the state gradient. If `None` provided, `LinCombEstimatorGradient` is used.

**Raises**

[**AlgorithmError**](/docs/api/qiskit/0.46/algorithms#qiskit.algorithms.AlgorithmError "qiskit.algorithms.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*](/docs/api/qiskit/0.46/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")) – Quantum state in the form of a parametrized quantum circuit.
- **param\_values** (*Sequence\[*[*float*](https://docs.python.org/3/library/functions.html#float)*]*) – Values of parameters to be bound.
- **gradient\_params** (*Sequence\[*[*Parameter*](/docs/api/qiskit/0.46/qiskit.circuit.Parameter "qiskit.circuit.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**](/docs/api/qiskit/0.46/algorithms#qiskit.algorithms.AlgorithmError "qiskit.algorithms.AlgorithmError") – If a gradient job fails.

**Return type**

np.ndarray
