En un post anterior comenté que había comenzado a leer un libro sobre SciPy y NumPy. En los primeros capítulos encontré ejemplos simples de la utilización de SciPy. Hoy voy a mostrar el código de dos de ellos, para los cuales implementé sus respectivos gráficos. El primero es sobre ajustar una distribución de puntos con dos Gaussianas, y el segundo es sobre encontrar los puntos de intersección de dos curvas.
Como cada paso está comentado en el código, entonces no me voy a detener en las explicaciones. Es más para tener estos ejemplos como anotaciones cuando necesite hacer un cálculo simple y un gráfico modesto, nada más que eso :-)
Si no tenemos los paquetes necesarios, en Fedora los instalamos así:
# yum install numpy scipy python-matplotlib
Ajuste de dos Gaussianas
Si usamos Vim, podemos usar el plugin para templates del cual hablábamos ayer. Entonces creamos el archivo:
$ vim fitting-two-gaussians.py
y copiamos el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
Luego lo ejecutamos, pero antes le damos los permisos necesarios para ello:
$ chmod +x fitting-two-gaussians.py
$ ./fitting-two-gaussians.py
( 1.01566899098 +/- 0.00385041607346 )
( 3.01416857209 +/- 0.00491510905728 )
( 0.99386852028 +/- 0.00492078923246 )
( -1.91566245187 +/- 0.00722572741217 )
( 15.0208881795 +/- 0.000735898852204 )
( 0.529428527565 +/- 0.000735896650911 )
Como resultado, obtenemos los seis parámetros de las dos Gaussianas y sus respectivas incertezas. El gráfico es el siguiente (click para ampliar):
Intersección de dos curvas
Siguiendo los pasos anteriores, creamos el archivo:
$ vim intersection-points.py
y copiamos el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
Luego lo ejecutamos, dándole sus permisos antes:
$ chmod +x intersection-points.py
$ ./intersection-points.py
( 13.4077307829 , -0.365922692171 )
( 18.1136612829 , -0.318863387171 )
( 31.7833086315 , -0.182166913685 )
( 37.0799991955 , -0.129200008045 )
( 39.8483778612 , -0.101516221388 )
( 43.8258775032 , -0.0617412249676 )
En este caso, el resultado son los seis puntos de intersección entre las dos curvas. El gráfico es este (click para ampliar):