StatevectorEstimator
class qiskit.primitives.StatevectorEstimator(*, default_precision=0.0, seed=None)
Basen: BaseEstimatorV2
Einfache Implementierung von BaseEstimatorV2 mit vollständiger Zustandsvektorsimulation.
Diese Klasse wird implementiert durch Statevector implementiert, die bereitgestellte Schaltungen in reine Zustandsvektoren umwandelt. Auf diese Zustände wird dann mit SparsePauliOpwas bedeutet, dass diese Implementierung derzeit nur mit Pauli-basierten Observablen kompatibel ist.
Jedes Tupel von (circuit, observables, <optional> parameter values, <optional> precision), das als „ PUB ” (Schätzer-Primitiv-Einheitsblock) bezeichnet wird, erzeugt sein eigenes arraybasiertes Ergebnis. Der run() Methode kann eine Folge von Pubs übergeben werden, die in einem Aufruf ausgeführt werden sollen.
Das Ergebnis dieser Klasse ist exakt, wenn der Schaltkreis nur unitäre Operationen enthält. Andererseits könnte das Ergebnis stochastisch sein, wenn die Schaltung eine nicht-unitäre Operation enthält, wie beispielsweise einen Reset für bestimmte Subsysteme. Das stochastische Ergebnis kann reproduzierbar gemacht werden, indem beispielsweise gesetzt seedwird StatevectorEstimator(seed=123).
from qiskit.circuit import Parameter, QuantumCircuit
from qiskit.primitives import StatevectorEstimator
from qiskit.quantum_info import Pauli, SparsePauliOp
import matplotlib.pyplot as plt
import numpy as np
# Define a circuit with two parameters.
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.ry(Parameter("a"), 0)
circuit.rz(Parameter("b"), 0)
circuit.cx(0, 1)
circuit.h(0)
# Define a sweep over parameter values, where the second axis is over
# the two parameters in the circuit.
params = np.vstack([
np.linspace(-np.pi, np.pi, 100),
np.linspace(-4 * np.pi, 4 * np.pi, 100)
]).T
# Define three observables. Many formats are supported here including
# classes such as qiskit.quantum_info.SparsePauliOp. The inner length-1
# lists cause this array of observables to have shape (3, 1), rather
# than shape (3,) if they were omitted.
observables = [
[SparsePauliOp(["XX", "IY"], [0.5, 0.5])],
[Pauli("XX")],
[Pauli("IY")]
]
# Instantiate a new statevector simulation based estimator object.
estimator = StatevectorEstimator()
# Estimate the expectation value for all 300 combinations of
# observables and parameter values, where the pub result will have
# shape (3, 100). This shape is due to our array of parameter
# bindings having shape (100,), combined with our array of observables
# having shape (3, 1)
pub = (circuit, observables, params)
job = estimator.run([pub])
# Extract the result for the 0th pub (this example only has one pub).
result = job.result()[0]
# Error-bar information is also available, but the error is 0
# for this StatevectorEstimator.
result.data.stds
# Pull out the array-based expectation value estimate data from the
# result and plot a trace for each observable.
for idx, pauli in enumerate(observables):
plt.plot(result.data.evs[idx], label=pauli)
plt.legend()
Parameter
- default_precision (float) – Die Standardpräzision für den Schätzer, wenn sie nicht während der Ausführung angegeben wird.
- seed (np.random.Generator | int | None) – Das Seed- oder Generator-Objekt für die Erzeugung von Zufallszahlen. Wenn Keine, wird ein zufällig gesetzter Standard-RNG verwendet.
Attribute
default_precision
Rückgabe der Standardpräzision
seed
Gibt das Seed- oder Generator-Objekt für die Zufallszahlengenerierung zurück.
Methoden
run
run(pubs, *, precision=None)
Schätzen Sie die Erwartungswerte für jedes angebotene Lokal (Primitive Unified Bloc).
Parameter
- pubs (Iterable[TypeAliasForwardRef('EstimatorPubLike')]) – Eine Iterable aus pub-ähnlichen Objekten, wie beispielsweise Tupeln
(circuit, observables)oder(circuit, observables, parameter_values). - precision (float | None) – Die Zielgenauigkeit für die Erwartungswertschätzungen jedes Laufs Estimator Pub, der seine eigene Genauigkeit nicht angibt. Wenn Keine, wird der Standardpräzisionswert des Schätzers verwendet.
Rückgabe
Ein Auftragsobjekt, das Ergebnisse enthält.
Rückgabetyp
PrimitiveJob [ PrimitiveResult [ PubResult ]]