Skip to content

Dacastillo/QQuipu3

Repository files navigation

QQuipu3 — Simulación de Estados Térmicos con Computación Cuántica

Python Qiskit License: MIT

Parte del proyecto Quantum Quipu del grupo QuDIT, enfocado en aplicaciones de computación cuántica a simulación de sistemas físicos.

Descripción del proyecto

Este repositorio implementa la simulación de estados térmicos (o estados de Gibbs) de un sistema cuántico usando circuitos cuánticos parametrizados.

Dado un Hamiltoniano H y una temperatura inversa β = 1/kT, el estado térmico de equilibrio es:

$$\rho_{\beta} = \frac{e^{-\beta H}}{\mathcal{Z}}, \quad \mathcal{Z} = \text{Tr}[e^{-\beta H}]$$

El objetivo es preparar (o aproximar) ρ_β usando un circuito cuántico ejecutable en hardware IBM o en el simulador Qiskit Aer.

Método utilizado

El proyecto implementa un método híbrido que combina:

  1. Estados de Haar aleatorios para inicialización
  2. Evolución en tiempo imaginario mediante el operador e^{-βH/2}
  3. Block encoding y amplificación de amplitud para implementación cuántica

El método clásico calcula analíticamente la energía esperada, mientras que el método cuántico utiliza circuitos con block encoding (FABLE) y amplificación tipo Grover.

Sistema simulado

  • Hamiltoniano: Heisenberg anisotrópico 1D con campo transversal
  • Número de qubits: 4 (configurable)
  • Rango de β: [0.0, 1.6] con paso 0.05
  • Backend: Qiskit Aer Simulator

Estructura del repositorio

QQuipu3/
├── README.md                          # Este archivo
├── LICENSE                            # Licencia MIT
├── requirements.txt                   # Dependencias de Python
├── P3.ipynb                           # Notebook principal (resultados y exploración)
├── functions_QQ.py                    # Funciones de construcción de circuitos y análisis
├── run_QQ.py                          # Script de ejecución por línea de comandos
├── theory/
│   └── background.md                  # Base teórica del método
└── results/
    └── figures/                       # Figuras generadas

Relación entre archivos

run_QQ.py
    └── importa → functions_QQ.py
                      └── define:
                          - transverse_field_heisenberg()  → Hamiltoniano
                          - quantum_haar_state()           → Estado de Haar
                          - block_encoding_amplification() → Método cuántico

P3.ipynb
    └── importa → functions_QQ.py
    └── explora interactivamente los resultados

Instalación

git clone https://github.com/Dacastillo/QQuipu3.git
cd QQuipu3
pip install -r requirements.txt

Requisitos adicionales

El módulo fable (Fast Approximate Block Encoding) es necesario para el método cuántico. Si no está disponible, el método clásico seguirá funcionando.

Uso

Modo interactivo (notebook)

jupyter notebook P3.ipynb

Modo script

# Ejecución con parámetros por defecto
python run_QQ.py

# Personalizar parámetros
python run_QQ.py --n-qubits 4 --depth 6 --beta-max 1.6

# Guardar figura
python run_QQ.py --output results/figures/energia_vs_beta.png

Opciones de línea de comandos

Opción Tipo Default Descripción
--n-qubits int 4 Número de qubits del sistema
--depth int 6 Profundidad del circuito Haar
--beta-max float 1.6 Valor máximo de temperatura inversa
--output str None Archivo de salida para la figura

Ejemplo mínimo

from functions_QQ import transverse_field_heisenberg, quantum_haar_state
from scipy.linalg import expm
import numpy as np

# Parámetros
N = 4
d = 6
beta = 1.0
h, jx, jy, jz = 1.0, 0.5, 1.25, 2.0

# Construir Hamiltoniano
H = transverse_field_heisenberg(N, h, jx, jy, jz)

# Generar estado de Haar y aplicar evolución imaginaria
_, _, state = quantum_haar_state(N, d)
Q = expm(-beta * H / 2.0)
tpq = Q @ state

# Calcular energía esperada
energy = np.inner(tpq.conj().T, H @ tpq).real / np.inner(tpq.conj().T, tpq).real
print(f"Energía esperada (β={beta}): {energy:.4f}")

Resultados

El script genera una figura comparativa mostrando la energía esperada en función de la temperatura inversa β, comparando los métodos clásico y cuántico.

Resultado principal

Interpretación física

  • β → 0 (alta temperatura): La energía se aproxima al valor promedio sobre todos los estados
  • β → ∞ (baja temperatura): La energía se aproxima al estado fundamental
  • La concordancia entre métodos valida la implementación cuántica

Contexto: Proyecto Quantum Quipu

Este es el tercer entregable (QQuipu3) del proyecto Quantum Quipu, que investiga aplicaciones de computación cuántica a problemas de física de la materia condensada.

Trabajo desarrollado en el grupo QuDIT — Quantum Information and Technology Group.

Autor

Daniel Castillo-Castro · dacastillo.github.io

Colaboradores: Tony Milla, Sebastián Páucar, César Pacheco

Licencia

MIT © 2024 Daniel Castillo-Castro

Referencias

  1. Lin, L. (2022). Lecture Notes on Quantum Algorithms for Scientific Computation. arXiv:2201.08309

  2. Powers, M. et al. (2021). Exploring Finite Temperature Properties of Materials with Quantum Computers. arXiv:2109.01619

  3. Motta, M. et al. (2020). Determining eigenstates and thermal states on a quantum computer using quantum imaginary time evolution. Nature Physics, 16, 205–210.

About

Proyecto de Quantum Quipu: Simulación de estados termales usando computación cuańtica.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors