Un circuito clásico (formado por una bobina y un condensador) oscila intercambiando energía magnética y eléctrica a una frecuencia específica.
Para que el circuito LC se comporte cuánticamente, la energía térmica debe ser mucho menor que el cuanto de energía del circuito . Para lograrlo, estos circuitos se enfrían a temperaturas cercanas al cero absoluto en refrigeradores de dilución. Entonces se promueven las variables clásicas carga y flujo magnético a operadores mecánicos cuánticos, que no conmutan. Al igual que en el oscilador armónico cuántico tradicional, esta cuantización determina que la energía del circuito no puede tener cualquier valor continuo, sino que está dividida en niveles discretos de energía:
A continuación, se muestra el código para simular la función de onda de la carga para un circuito LC cuántico:
import numpy as np
import matplotlib.pyplot as plt
import scipy.constants as const
from scipy.special import hermite
from math import factorial
# 1. Parámetros del circuito LC cuántico
L = 10e-9 # Inductancia: 10 nH
C = 100e-15 # Capacitancia: 100 fF
hbar = const.hbar
e = const.e
# 2. Frecuencia y dispersión de carga cuántica (punto cero)
omega_0 = 1 / np.sqrt(L * C)
sigma_q = np.sqrt((hbar * omega_0 * C) / 2)
# 3. Definición del espacio de carga (eje X, extendido a 5 sigma para ver los estados altos)
q_grid = np.linspace(-5 * sigma_q, 5 * sigma_q, 1000)
q_en_e = q_grid / e # Convertido a unidades de carga elemental
# 4. Función para calcular la densidad de probabilidad |Ψ_n(q)|^2
def densidad_probabilidad_quantum(n, q, sigma):
# Evalúa el polinomio de Hermite de orden n en el punto q/sigma
H_n = hermite(n)
coef_normalizacion = 1 / np.sqrt(2**n * factorial(n)) * (1 / (np.pi * sigma**2))**(0.25)
psi_n = coef_normalizacion * H_n(q / sigma) * np.exp(-(q**2) / (2 * sigma**2))
return psi_n**2
# 5. Calcular los datos para n = 0, 1, 2
prob_n0 = densidad_probabilidad_quantum(0, q_grid, sigma_q)
prob_n1 = densidad_probabilidad_quantum(1, q_grid, sigma_q)
prob_n2 = densidad_probabilidad_quantum(2, q_grid, sigma_q)
# 6. Graficar los resultados
plt.figure(figsize=(10, 6))
# Estado Fundamental (n=0)
plt.plot(q_en_e, prob_n0, color='teal', lw=2, label='Estado Fundamental (
)')
plt.fill_between(q_en_e, prob_n0, color='teal', alpha=0.1)
# Primer Estado Excitado (n=1)
plt.plot(q_en_e, prob_n1, color='darkorange', lw=2, label='Primer Estado Excitado (
)')
plt.fill_between(q_en_e, prob_n1, color='darkorange', alpha=0.1)
# Segundo Estado Excitado (n=2)
plt.plot(q_en_e, prob_n2, color='crimson', lw=2, label='Segundo Estado Excitado (
)')
plt.fill_between(q_en_e, prob_n2, color='crimson', alpha=0.1)
# Configuración estética de la gráfica
plt.title('Evolución de la Densidad de Probabilidad de la Carga en Estados Excitados', fontsize=12, fontweight='bold')
plt.xlabel('Carga en el Capacitor (en unidades de carga elemental
)', fontsize=11)
plt.ylabel('Densidad de Probabilidad
', fontsize=11)
plt.grid(True, linestyle=':', alpha=0.6)
plt.legend(loc='upper right', fontsize=10)
plt.tight_layout()
plt.show()
Se puede observar que la carga no está localizada en la gráfica de la densidad de probabilidad de la carga en los primeros estados:

Si incorporamos una unión Josephson en lugar de la bobina tradicional, transformamos el circuito LC cuántico en un circuito LC cuántico no lineal (el diseño básico de un cúbit superconductor tipo Transmon). La unión Josephson actúa como un “inductor no lineal” que destruye el espaciado uniforme de los niveles de energía y permite aislar únicamente los dos primeros estados cuánticos, que es lo que nos interesa para tener los dos estados de un qubit.
En este circuito se cambia el estado del qubit aplicando pulsos de microondas resonantes para inducir transiciones energéticas, y se lee el qubit midiendo el cambio de fase de un pulso de microondas enviado a un resonador acoplado, aprovechando el desplazamiento de frecuencia dispersivo que induce el estado del qubit.
A continuación, se muestra el código para modelar el circuito LC cuántico con unión Josephson y se puede visualizar el pozo de potencial.
import numpy as np
import matplotlib.pyplot as plt
# 1. Definición de parámetros de energía para el cúbit Transmon (en unidades arbitrarias de frecuencia)
E_C = 0.3 # Energía de carga
E_J = 15.0 # Energía de Josephson (En el Transmon, E_J >> E_C para mitigar ruido de carga)
# 2. Definición del eje del flujo / fase cuántica (phi)
phi = np.linspace(-np.pi, np.pi, 1000)
# 3. Potenciales: LC Armónico vs Unión Josephson Anarmónico
# Para comparar de forma justa, expandimos el coseno en serie de Taylor: cos(x) ≈ 1 - x^2/2 + x^4/24
# El término cuadrático representa la aproximación armónica (el circuito LC equivalente)
potencial_LC = 0.5 * E_J * phi**2
potencial_Josephson = E_J * (1 - np.cos(phi))
# 4. Cálculo aproximado de los primeros niveles de energía (Teoría de perturbaciones)
# Frecuencia de transición base (omega_01)
omega_p = np.sqrt(8 * E_C * E_J)
anarmonicidad = -E_C # La no-linealidad reduce la energía de los niveles superiores
# Niveles para el circuito LC armónico (espaciado constante)
E_LC_0 = 0.5 * omega_p
E_LC_1 = 1.5 * omega_p
E_LC_2 = 2.5 * omega_p
# Niveles para el circuito con Unión Josephson (Anarmónico)
E_J_0 = 0.5 * omega_p - (E_C / 4)
E_J_1 = 1.5 * omega_p - (E_C * 1.25)
E_J_2 = 2.5 * omega_p - (E_C * 2.75)
# 5. Graficar la estructura de energía del cúbit
plt.figure(figsize=(11, 6))
# Dibujar los pozos de potencial
plt.plot(phi, potencial_LC, '--', color='gray', alpha=0.7, label='Potencial LC clásico (Parábola)')
plt.plot(phi, potencial_Josephson, color='navy', lw=2.5, label='Potencial Josephson (Coseno)')
# Dibujar niveles de energía del circuito LC (Armónico)
plt.hlines([E_LC_0, E_LC_1, E_LC_2], -1.5, 1.5, colors='teal', linestyles=':', alpha=0.6)
plt.text(1.6, E_LC_1, 'LC Equiespaciado\n(No sirve como cúbit)', color='teal', va='center', fontsize=9)
# Dibujar niveles de energía de la Unión Josephson (Anarmónico)
plt.hlines(E_J_0, -1.1, 1.1, colors='crimson', lw=2)
plt.hlines(E_J_1, -1.8, 1.8, colors='crimson', lw=2)
plt.hlines(E_J_2, -2.2, 2.2, colors='crimson', lw=2)
# Etiquetas de transiciones
plt.text(-0.5, E_J_0 + 0.1, r'
', color='crimson', weight='bold')
plt.text(-0.5, E_J_1 + 0.1, r'
', color='crimson', weight='bold')
plt.text(-0.5, E_J_2 + 0.1, r'
', color='crimson', weight='bold')
# Flechas que muestran la diferencia de espaciado (Anarmonicidad)
diff_01 = E_J_1 - E_J_0
diff_12 = E_J_2 - E_J_1
plt.annotate('', xy=(0, E_J_1), xytext=(0, E_J_0), arrowprops=dict(arrowstyle="<->", color='darkorange', lw=2))
plt.annotate('', xy=(0, E_J_2), xytext=(0, E_J_1), arrowprops=dict(arrowstyle="<->", color='purple', lw=2))
plt.text(0.1, (E_J_0 + E_J_1)/2, f'Transición 0->1\n(Frecuencia del Cúbit)', color='darkorange', weight='bold', fontsize=9)
plt.text(0.1, (E_J_1 + E_J_2)/2, f'Transición 1->2\n(¡Es diferente!)', color='purple', weight='bold', fontsize=9)
# Configuración estética
plt.title('De Circuito LC a Cúbit Superconductor: El Pozo de Potencial Josephson', fontsize=12, fontweight='bold')
plt.xlabel('Fase Cuántica / Flujo Magnético (
)', fontsize=11)
plt.ylabel('Energía', fontsize=11)
plt.ylim(-1, E_J + 3)
plt.grid(True, linestyle=':', alpha=0.5)
plt.legend(loc='upper center')
plt.tight_layout()
plt.show()


Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.