Skip to main content
IBM Quantum Platform

StatevectorEstimator

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

GitHub

Bases: BaseEstimatorV2

Implementação simples de BaseEstimatorV2 com simulação completa do vetor de estado.

Essa classe é implementada por meio de Statevector que transforma os circuitos fornecidos em vetores de estado puro. Esses estados são posteriormente influenciados por SparsePauliOpo que implica que, no momento, essa implementação só é compatível com observáveis baseados em Pauli.

Cada tupla de (circuit, observables, <optional> parameter values, <optional> precision), chamada de bloco unificado primitivo estimador ( PUB ), produz seu próprio resultado baseado em matriz. O run() método pode receber uma sequência de pubs para serem executados em uma única chamada.

Nota

O resultado desta classe é exato se o circuito contiver apenas operações unitárias. Por outro lado, o resultado pode ser estocástico se o circuito contiver uma operação não unitária, como uma reinicialização para alguns subsistemas. O resultado estocástico pode ser reproduzido definindo seed, por exemplo, 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()
Saída do código anterior.

Parâmetros

  • default_precision (float) – A precisão padrão do estimador, se não for especificada durante a execução.
  • seed (np.random.Generator | int | None) – A semente ou o objeto Generator para a geração de números aleatórios. Se for None (Nenhum), será usado um RNG padrão com sementes aleatórias.

Atributos

default_precision

Retorna a precisão padrão

seed

Retorna a semente ou o objeto Generator para a geração de números aleatórios.


Métodos

run

run(pubs, *, precision=None)

GitHub

Estimar valores de expectativa para cada pub fornecido (Primitive Unified Bloc).

Parâmetros

  • pubs (Iterable[TypeAliasForwardRef('EstimatorPubLike')]) – Uma coleção de objetos do tipo pub, como tuplas (circuit, observables) ou (circuit, observables, parameter_values).
  • precision (float | None) – A precisão de destino para estimativas de valor de expectativa de cada execução do Estimator Pub que não especifica sua própria precisão. Se for None, será usado o valor de precisão padrão do estimador.

Retorna

Um objeto de trabalho que contém resultados.

Tipo de retorno

TrabalhoPrimitivo [ ResultadoPrimitivo [ ResultadoPúblico ]]

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.