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

# VariationalPrinciple

*class* `qiskit.algorithms.time_evolvers.variational.VariationalPrinciple(qgt, gradient)`

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

Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC)

A Variational Principle class. It determines the time propagation of parameters in a quantum state provided as a parametrized quantum circuit (ansatz).

### qgt

Instance of a class used to compute the GQT.

**Type**

[BaseQGT](/docs/api/qiskit/0.46/qiskit.algorithms.gradients.BaseQGT "qiskit.algorithms.gradients.BaseQGT")

### gradient

Instance of a class used to compute the state gradient.

**Type**

[BaseEstimatorGradient](/docs/api/qiskit/0.46/qiskit.algorithms.gradients.BaseEstimatorGradient "qiskit.algorithms.gradients.BaseEstimatorGradient")

**Parameters**

- **qgt** ([*BaseQGT*](/docs/api/qiskit/0.46/qiskit.algorithms.gradients.BaseQGT "qiskit.algorithms.gradients.BaseQGT")) – Instance of a class used to compute the GQT.
- **gradient** ([*BaseEstimatorGradient*](/docs/api/qiskit/0.46/qiskit.algorithms.gradients.BaseEstimatorGradient "qiskit.algorithms.gradients.BaseEstimatorGradient")) – Instance of a class used to compute the state gradient.

## Methods

### evolution\_gradient

*abstract* `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.

**Return type**

np.ndarray

### metric\_tensor

`metric_tensor(ansatz, param_values)`

Calculates a metric tensor according to the rules of this variational principle.

**Parameters**

- **ansatz** ([*QuantumCircuit*](/docs/api/qiskit/0.46/qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit")) – Quantum state in the form of a parametrized quantum circuit.
- **param\_values** ([*Sequence*](https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence)*\[*[*float*](https://docs.python.org/3/library/functions.html#float)*]*) – Values of parameters to be bound.

**Returns**

Metric tensor.

**Raises**

[**AlgorithmError**](/docs/api/qiskit/0.46/algorithms#qiskit.algorithms.AlgorithmError "qiskit.algorithms.AlgorithmError") – If a QFI job fails.

**Return type**

[*Sequence*](https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence)\[[float](https://docs.python.org/3/library/functions.html#float)]
