Skip to main content
IBM Quantum Platform

StatevectorEstimator

class qiskit.primitives.StatevectorEstimator(*, default_precision=0.0, seed=None)

GitHub

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.

Anmerkung

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()
Ausgabe des vorherigen Codes.

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)

GitHub

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 ]]

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.