Download simular_espectro_completo_vcsd.py from PabloCT-code/VCSD-I: direct link, hf CLI and curl.
- Browser
- Download file 3.81 kB
-
https://huggingface.co/PabloCT-code/VCSD-I/resolve/main/simular_espectro_completo_vcsd.py
- Command line
-
hf download hf://PabloCT-code/VCSD-I/simular_espectro_completo_vcsd.py
-
curl -L -o simular_espectro_completo_vcsd.py https://huggingface.co/PabloCT-code/VCSD-I/resolve/main/simular_espectro_completo_vcsd.py
3.81 kB
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| def generar_espectro_completo_vcsd(): | |
| """ | |
| Genera y grafica el espectro de potencias continuo del CMB (l = 2 a 3000) bajo | |
| el modelo VCSD-I, mostrando la emergencia de los micro-picos acústicos remanentes | |
| y el desfase asintótico constante de las funciones de Bessel en alta frecuencia. | |
| """ | |
| # 1. Definición del rango multipolar completo (Bajas a ultra-altas frecuencias) | |
| multipolos = np.arange(2, 3001) | |
| # 2. Parámetros físicos calibrados analíticamente | |
| A_base = 3200.0 | |
| l_acustico = 220.0 | |
| damping_silk = 450.0 | |
| alpha_gradiente = 0.35 | |
| beta_vorticidad = 0.18 | |
| # 3. Modelado de la Fase Híbrida Adaptativa (Logarítmica -> Límite Bessel Constante) | |
| # Orden de la función de Bessel ν = (1 - β)/2. Desfase asintótico = ν*π/2 | |
| nu = (1.0 - beta_vorticidad) / 2.0 | |
| desfase_asintotico = (nu * np.pi) / 2.0 | |
| # Factor de transición suave para acoplar ambos regímenes dinámicos sin discontinuidades | |
| factor_transicion = 1.0 / (1.0 + np.exp(-(multipolos - 1000) / 200)) | |
| fase_baja_frec = multipolos * (np.pi / l_acustico) + (beta_vorticidad * np.log(multipolos)) | |
| fase_alta_frec = multipolos * (np.pi / l_acustico) + desfase_asintotico | |
| fase_efectiva = (1.0 - factor_transicion) * fase_baja_frec + factor_transicion * fase_alta_frec | |
| oscilacion_acustica = np.cos(fase_efectiva)**2 | |
| # 4. Envolventes de Potencia y Confinamiento Geométrico | |
| modulacion_pozo = 1.0 + alpha_gradiente * np.sin(multipolos * (np.pi / (2.0 * l_acustico))) | |
| # El exponente (1.5 - beta) modela el confinamiento inercial por rotación macroscópica | |
| filtro_atenuacion = np.exp(- (multipolos / damping_silk)**(1.5 - beta_vorticidad)) | |
| # 5. Espectro de Potencias Neto Cl | |
| Cl_neto = A_base * oscilacion_acustica * modulacion_pozo * filtro_atenuacion | |
| # 6. Configuración de la Gráfica de Alta Calidad Académica | |
| plt.figure(figsize=(11, 6), dpi=120) | |
| plt.style.use('seaborn-v0_8-whitegrid' if 'seaborn-v0_8-whitegrid' in plt.style.available else 'default') | |
| # Trazado de la curva del modelo VCSD-I | |
| plt.plot(multipolos, Cl_neto, color='#004488', linewidth=2.0, label=r'Modelo VCSD-I ($\beta=0.18, \alpha=0.35$)') | |
| # Sombreado y marcadores específicos para la región de Micro-Picos Extremos (l > 2000) | |
| plt.axvspan(2000, 3000, color='#ffea00', alpha=0.15, label='Región de Micro-Picos Remanentes (Bessel)') | |
| # Anotación de los picos acústicos principales y secundarios | |
| plt.annotate('1º Pico', xy=(220, 5600), xytext=(350, 5700), arrowprops=dict(arrowstyle='->', color='black')) | |
| plt.annotate('2º Pico', xy=(540, 1200), xytext=(650, 1600), arrowprops=dict(arrowstyle='->', color='black')) | |
| plt.annotate('3º Pico', xy=(810, 1100), xytext=(920, 1500), arrowprops=dict(arrowstyle='->', color='black')) | |
| plt.annotate('Micro-Picos (4º-7º)', xy=(2300, 60), xytext=(1600, 800), | |
| arrowprops=dict(arrowstyle='->', color='#cc0000', lw=1.5)) | |
| # Configuración de ejes y etiquetas formalizadas | |
| plt.title('Espectro de Potencias Angular del CMB - Extensión Multipolar Completa (VCSD-I)', fontsize=13, pad=15) | |
| plt.xlabel('Multipolo Angular ($\ell$)', fontsize=11) | |
| plt.ylabel(r'$\mathcal{D}_\ell \equiv \ell(\ell+1)C_\ell / 2\pi$ [$\mu$K$^2$]', fontsize=11) | |
| plt.xlim(2, 3000) | |
| plt.ylim(0, 6200) | |
| plt.legend(loc='upper right', frameon=True, fontsize=10) | |
| plt.tight_layout() | |
| # Guardar gráfica en alta resolución | |
| plt.savefig('espectro_completo_vcsd_cmb.png', dpi=300) | |
| print("[*] Gráfica generada y guardada con éxito como 'espectro_completo_vcsd_cmb.png'.") | |
| plt.show() | |
| if __name__ == '__main__': | |
| generar_espectro_completo_vcsd() | |