Evolución Analog

El funcional AnalogEvolution simula la evolución analog de un sistema cuántico bajo uno o más Hamiltonianos, siguiendo un schedule especificado dependiente del tiempo. Su interfaz de parámetros refleja la de Schedule, lo que facilita el barrido de formas de onda de control o amplitudes de pulse desde optimizadores clásicos.

Los observables y los conteos de shots se especifican por separado mediante objetos de lectura que se pasan a execute().

Parámetros

  • schedule (Schedule): Define el tiempo total de evolución, los pasos temporales, los Hamiltonianos y sus coeficientes dependientes del tiempo.

  • initial_state (QTensor): Estado inicial del sistema.

  • store_intermediate_results (bool, opcional): Si es True, registra el estado en cada paso temporal. El valor predeterminado es False.

Retorna

Ejemplo de Uso

import numpy as np
from qilisdk.analog import Schedule, X, Z, Y
from qilisdk.core import QTensor
from qilisdk.core.interpolator import Interpolation
from qilisdk.backends import QiliSim, CudaBackend
from qilisdk.functionals import AnalogEvolution

# Define total time and timestep
T = 10.0
dt = 0.5
nqubits = 1

# Define Hamiltonians
Hx = -sum(X(i) for i in range(nqubits))
Hz = sum(Z(i) for i in range(nqubits))

# Create the AnalogEvolution functional
analog_evolution = AnalogEvolution(
    schedule=Schedule.linear(Hx, Hz, total_time=T, dt=dt),
    initial_state=QTensor.uniform(nqubits),
    store_intermediate_results=False,
)

podemos ejecutarlo en el backend QiliSim:

from qilisdk.readout import Readout

# Execute on QiliSim backend and inspect results
backend = QiliSim()
results = backend.execute(
    analog_evolution,
    Readout().with_expectation(observables=[Z(0), X(0), Y(0)]),
)
print(results)

Salida

- Functional Results: [

Expectation Value Results: (
    expectation_values=[-0.99388223, 0.0467696, -0.10005353],
)

]