Skip to main content
IBM Quantum Platform

StatevectorEstimator

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

GitHub

Bases : BaseEstimatorV2

Mise en œuvre simple de BaseEstimatorV2 avec simulation complète du vecteur d'état.

Cette classe est mise en œuvre par l'intermédiaire de Statevector qui transforme les circuits fournis en vecteurs d'état purs. Ces états sont ensuite influencés par SparsePauliOpce qui implique que, pour l'instant, cette implémentation n'est compatible qu'avec des observables basées sur Pauli.

Chaque tuple de (circuit, observables, <optional> parameter values, <optional> precision), appelé bloc unifié primitif d'estimation ( PUB ), produit son propre résultat sous forme de tableau. La run() méthode peut recevoir une séquence de pubs à exécuter en un seul appel.

Remarque

Le résultat de cette classe est exact si le circuit ne contient que des opérations unitaires. D'autre part, le résultat pourrait être stochastique si le circuit contient une opération non unitaire telle qu'une réinitialisation pour certains sous-systèmes. Le résultat stochastique peut être rendu reproductible en définissant seed, par exemple, 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()
Sortie du code précédent.

Paramètres

  • default_precision (float) – La précision par défaut de l'estimateur si elle n'est pas spécifiée lors de l'exécution.
  • seed (np.random.Generator | int | None) – La graine ou l'objet Générateur pour la génération de nombres aléatoires. Si None, un RNG aléatoire par défaut sera utilisé.

Attributs

default_precision

Renvoyer la précision par défaut

seed

Renvoie la graine ou l'objet Generator pour la génération de nombres aléatoires.


Méthodes

run

run(pubs, *, precision=None)

GitHub

Estimer les valeurs d'espérance pour chaque pub fournie (bloc primitif unifié).

Paramètres

  • pubs (Iterable[TypeAliasForwardRef('EstimatorPubLike')]) – Une collection d'objets de type pub, tels que des tuples (circuit, observables) ou (circuit, observables, parameter_values).
  • precision (float | None) – La précision cible pour les estimations de la valeur de l'espérance de chaque exécution Estimator Pub qui ne spécifie pas sa propre précision. Si None, la valeur de précision par défaut de l'estimateur sera utilisée.

Retours

Un objet de travail qui contient des résultats.

Type de retour

PrimitiveJob [ PrimitiveResult [ PubResult ]]

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.