mirror of https://github.com/Qiskit/qiskit.git
42 lines
1.8 KiB
YAML
42 lines
1.8 KiB
YAML
---
|
|
features:
|
|
- |
|
|
Add primitive-enabled algorithms for Variational Quantum Time Evolution that implement the
|
|
interface for Quantum Time Evolution. The feature supports real
|
|
(:class:`qiskit.algorithms.VarQRTE`.) and imaginary (:class:`qiskit.algorithms.VarQITE`.)
|
|
quantum time evolution according to a variational principle passed.
|
|
Each algorithm accepts a variational principle and the following are provided:
|
|
:class:`qiskit.algorithms.time_evolvers.variational.ImaginaryMcLachlanPrinciple`,
|
|
:class:`qiskit.algorithms.time_evolvers.variational.RealMcLachlanPrinciple`,
|
|
Both algorithms require solving ODE equations and linear equations which is handled by classes
|
|
implemented in `qiskit.algorithms.time_evolvers.variational.solvers` module.
|
|
|
|
.. code-block:: python
|
|
|
|
from qiskit.algorithms import TimeEvolutionProblem, VarQITE
|
|
from qiskit.algorithms.time_evolvers.variational import ImaginaryMcLachlanPrinciple
|
|
from qiskit.circuit.library import EfficientSU2
|
|
from qiskit.quantum_info import SparsePauliOp
|
|
import numpy as np
|
|
|
|
observable = SparsePauliOp.from_list(
|
|
[
|
|
("II", 0.2252),
|
|
("ZZ", 0.5716),
|
|
("IZ", 0.3435),
|
|
("ZI", -0.4347),
|
|
("YY", 0.091),
|
|
("XX", 0.091),
|
|
]
|
|
)
|
|
|
|
ansatz = EfficientSU2(observable.num_qubits, reps=1)
|
|
init_param_values = np.zeros(len(ansatz.parameters))
|
|
for i in range(len(ansatz.parameters)):
|
|
init_param_values[i] = np.pi / 2
|
|
var_principle = ImaginaryMcLachlanPrinciple()
|
|
time = 1
|
|
evolution_problem = TimeEvolutionProblem(observable, time)
|
|
var_qite = VarQITE(ansatz, var_principle, init_param_values)
|
|
evolution_result = var_qite.evolve(evolution_problem)
|