Skip to main content
IBM Quantum Platform

StatevectorEstimator

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

GitHub

Bases: BaseEstimatorV2

Implementación sencilla de BaseEstimatorV2 con simulación completa de vectores de estado.

Esta clase se implementa mediante Statevector que convierte los circuitos proporcionados en puros vectores de estado. Estos estados son posteriormente actuados por SparsePauliOplo que implica que, en la actualidad, esta implementación sólo es compatible con observables basados en Pauli.

Cada tupla de (circuit, observables, <optional> parameter values, <optional> precision), denominada «bloque unificado primitivo estimador» (en inglés, PUB ), produce su propio resultado basado en una matriz. El run() método puede recibir una secuencia de publicaciones para ejecutar en una sola llamada.

Nota

El resultado de esta clase es exacto si el circuito contiene solo operaciones unitarias. Por otro lado, el resultado podría ser estocástico si el circuito contiene una operación no unitaria, como un reinicio para algunos subsistemas. El resultado estocástico puede hacerse reproducible estableciendo seed, por ejemplo, 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()
Salida del código anterior.

Parámetros

  • default_precision (float) – La precisión por defecto para el estimador si no se especifica durante la ejecución.
  • seed (np.random.Generator | int | None) – La semilla o el objeto Generador para la generación de números aleatorios. Si es Ninguno, se utilizará un RNG aleatorio por defecto.

Atributos

default_precision

Devuelve la precisión por defecto

seed

Devuelve la semilla o el objeto Generador para la generación de números aleatorios.


Métodos

run

run(pubs, *, precision=None)

GitHub

Estimar los valores de expectativa para cada pub proporcionado (Bloque Primitivo Unificado).

Parámetros

  • pubs (Iterable[TypeAliasForwardRef('EstimatorPubLike')]) – Una secuencia de objetos similares a «pub», como tuplas (circuit, observables) o (circuit, observables, parameter_values).
  • precision (float | None) – La precisión objetivo para las estimaciones del valor de expectativa de cada ejecución Estimador Pub que no especifica su propia precisión. Si es Ninguno, se utilizará el valor de precisión por defecto del estimador.

Devuelve

Un objeto de trabajo que contiene resultados.

Tipo de retorno

TrabajoPrimitivo [ ResultadoPrimitivo [ ResultadoPúblico ]]

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.