Underc0de - La Casa de los Informáticos

Programación Scripting => Python => Mensaje iniciado por: fortil en Octubre 05, 2012, 01:02:29 AM

Título: [Uso de matplotlib y numpy] Potencial de Morse
Publicado por: fortil en Octubre 05, 2012, 01:02:29 AM
Hola a todxs

Como yo estudio química me incursioné un poco en python para científicos (matplotlib y numpy, entre otros) y he echo una programita sobre el potencial del Morse, que sirve para describir la energía de las funciones de onda etc. xD

acá se los dejo, además puede servir de ejemplo para muchas cosas mas, como transformar nuestra cámara normal en una "infrarojo" (entre comillas porque no mas es efecto de imagen) luego le investigo mas sobre el tema y les paso como.

Código (python) [Seleccionar]

##POTENCIAL DE MORSE BY FORTIL##

import numpy as np
import matplotlib.pyplot as plt

def rango(x,x1):
    return np.arange(x,x1,0.1)

def f(x,v0):
    return v0*(1-x)**2

def ex(x, a=0.5, x0 = 2.0, v0 = 0.05):
    return f(np.exp(-a*((x)-x0)),v0)

def coseno(x,a):
    return a+0.0005*np.cos(10*x+np.pi)
   
x = np.arange(0, 80.0, 0.1)

fig = plt.figure()
ax1 = fig.add_subplot(111)

ax1.plot(x, ex(x), 'b-',x,ex(x,0.05),'r-')
ax1.set_title("Potencial de Morse por Fortil", fontsize=16)
ax1.set_ylabel(r'$V_f$')
ax1.set_xlabel(r'$X$')

ax1.text(20,0.025,r"$\alpha_1 $ mayor",fontsize=12, color='r')
ax1.text(7,0.035, r"$\alpha_2 $ menor", fontsize=12, color='b')
ax1.text(60,0.051, r"$V_0 = 0.05$", fontsize=12, color='y')
ax1.text(60,0.009, r"$X_0 = 2.0$", fontsize=12, color='black')
ax1.text(20,0.06,r"$\alpha_2 = \frac{\alpha_1}{10} $",
         fontsize=14, color='g')
ax1.text(25,0.12,r"$V_f = V_0\times[1-e^{-\alpha(X-X_0)}]$",
         fontsize=18, color='black')

ax1.plot(rango(ex(0.6),80.0),
         coseno(rango(ex(0.6),80.0),0.05),'c-')
ax1.acorr(x, usevlines=False, normed=True, maxlags=1, lw=2)
ax1.set_ylim(0,0.16)
ax1.set_xlim(0,70)

plt.show()

Título: Re:[Uso de matplotlib y numpy] Potencial de Morse
Publicado por: ANTRAX en Octubre 05, 2012, 08:54:42 AM
Buenisimo fortil!
viene de 10! muchas gracias