Skip to main content
IBM Quantum Platform

StatevectorEstimator

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

GitHub

Basi: BaseEstimatorV2

Semplice implementazione di BaseEstimatorV2 con simulazione completa del vettore di stato.

Questa classe è implementata tramite Statevector che trasforma i circuiti forniti in puri vettori di stato. Questi stati sono successivamente agiti da SparsePauliOp, il che implica che, al momento, questa implementazione è compatibile solo con le osservabili basate su Pauli.

Ogni tupla di (circuit, observables, <optional> parameter values, <optional> precision), denominata blocco unificato primitivo di stima ( PUB ), produce il proprio risultato basato su array. Al run() metodo può essere fornita una sequenza di pub da eseguire in un'unica chiamata.

Nota

Il risultato di questa classe è esatto se il circuito contiene solo operazioni unitarie. D'altra parte, il risultato potrebbe essere stocastico se il circuito contiene un'operazione non unitaria, come un reset per alcuni sottosistemi. Il risultato stocastico può essere reso riproducibile impostando seed, ad esempio, 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()
Output del codice precedente.

Parametri

  • default_precision (float) – La precisione predefinita per lo stimatore, se non specificata durante l'esecuzione.
  • seed (np.random.Generator | int | None) – Il seme o l'oggetto Generator per la generazione di numeri casuali. Se Nessuno, verrà utilizzato un RNG predefinito con seme casuale.

Attributi

default_precision

Restituisce la precisione predefinita

seed

Restituisce il seme o l'oggetto Generator per la generazione di numeri casuali.


Metodi

run

run(pubs, *, precision=None)

GitHub

Stimare i valori di aspettativa per ogni pub fornito (Primitive Unified Bloc).

Parametri

  • pubs (Iterable[TypeAliasForwardRef('EstimatorPubLike')]) – Un iterabile di oggetti simili a pub, come tuple (circuit, observables) o (circuit, observables, parameter_values).
  • precision (float | None) – La precisione target per le stime del valore di aspettativa di ciascun Run Estimator Pub che non specifica la propria precisione. Se Nessuno, verrà utilizzato il valore di precisione predefinito dello stimatore.

Risultati

Un oggetto lavoro che contiene i risultati.

Tipo di restituzione

PrimitiveJob [ PrimitiveResult [ PubResult ]]

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.