Texto y código sujeto bajo Creative Commons Attribution license, CC-BY-SA. (c) Original por Lorena A. Barba, 2013, traducido libremente por F.J. Navarro-Brull para CAChemE.org # Recuerda: Los comentarios en python se indican con el signo de almohadilla %pylab inline # El comando de arriba hará que figuras de este notebook se representen junto al texto import numpy as np # aquí importamos numpy, llamándolo "np" de ahora en adelante import matplotlib.pyplot as plt # aquí importamos matplotlib, llamándolo "plt" import time, sys # e importamos algunas funciones útiles from IPython.core.display import clear_output # utilizado para la animación que se verá adelante nx = 41 # prueba a cambiar este número de 41 a 81 y ejecutar todo ... ¿qué pasa? dx = 2./(nx-1) nt = 25 # nt es el número de pasos de tiempo que queremos calcular dt = .025 # dt es la cantidad de tiempo que cada momento de tiempo abarca (delta t) c = 1. # asumir la velocidad de la onda de c = 1 u = np.ones(nx) # numpy función ones() creando un array de 1 con nx elmentos u[.5/dx : 1/dx+1]=2 # estableciendo u = 2 entre 0.5 y 1 como nuestras C.I.s (condiciones de iniciales) print u plt.plot(np.linspace(0,2,nx), u) un = np.ones(nx) # crea un array temporal de unos con nx elementos for n in range(nt): # bucle para los valores de n desde 0 a nt-1, por lo que se ejecutará nt veces un[:] = u[:] # copia los valores existentes de u en un for i in range(1,nx): ## puedes convertir esta línea en un comentario... #for i in range(nx): ## ... e intercambiarla por esta otra para ver que pasa! u[i] = un[i]-c*dt/dx*(un[i]-un[i-1]) plt.plot(np.linspace(0,2,nx),u) from IPython.display import YouTubeVideo YouTubeVideo('iz22_37mMkk') YouTubeVideo('xq9YTcv-fQg') YouTubeVideo('y2WaK7_iMRI') from IPython.core.display import HTML def css_styling(): styles = open("../styles/custom.css", "r").read() return HTML(styles) css_styling()