Hamiltoniano
La clase Hamiltonian representa un Hamiltoniano simbólico como una suma de operadores de Pauli ponderados. Se pueden crear Hamiltonianos utilizando los operadores de Pauli integrados y combinarlos con operaciones aritméticas estándar.
Construcción
Para construir un Hamiltoniano con un único Pauli, se pueden usar los constructores X(i), Y(i), Z(i), I(i). A partir de estos operadores de un qubit, se pueden construir Hamiltonianos de múltiples qubits mediante operaciones aritméticas. Las operaciones siguen la sintaxis de Python; por ejemplo: 2 * Z(0) + Z(1) y Z(0) * Z(1) construyen un Hamiltoniano de múltiples qubits.
Lista de Operaciones
Operaciones aritméticas:
Suma:
H1 + H2Multiplicación escalar:
5 * HMultiplicación:
H0 * H1Resta:
H1 - H2División por escalar:
H / 5Negación:
-H
Operadores Simbólicos Adicionales:
conmutador:
H1.commutator(H2)anticonmutador:
H1.anticommutator(H2)norma vectorial:
H.vector_norm()norma de Frobenius:
H.frobenius_norm()traza:
H.trace()
Exportación de Hamiltonianos:
a matriz:
H.to_matrix(nqubits)a qtensor:
H.to_qtensor(nqubits)
Importación de Hamiltonianos:
desde qtensor:
Hamiltonian.from_qtensor(qtensor)desde cadena de texto:
Hamiltonian.parse(hamiltonian_string)
Ejemplo: Hamiltoniano de Ising
Para definir un Hamiltoniano de Ising de la forma:
puede utilizar los operadores de Pauli Z de la biblioteca:
from qilisdk.analog import Z
nqubits = 3
J = {(0, 1): 1, (0, 2): 2, (1, 2): 4}
h = {0: 1, 1: 2, 2: 3}
coupling = sum(weight * Z(i) * Z(j) for (i, j), weight in J.items())
fields = sum(weight * Z(i) for i, weight in h.items())
H = -(coupling + fields)
print(H)
Salida:
- Z(0) Z(1) - 2 Z(0) Z(2) - 4 Z(1) Z(2) - Z(0) - 2 Z(1) - 3 Z(2)