Texto y código sujeto bajo Creative Commons Attribution license, CC-BY-SA. (c) Original por Lorena A. Barba, 2013, traducido por F.J. Navarro-Brull para CAChemE.org %pylab inline # El comando de arriba hará que figuras de este notebook se representen junto al texto import numpy as np # numpy es una libreria que realiza operaciones matriciales estilo MATLAB import matplotlib.pyplot as plt # matplotlib es una librería para dibujar gráficas en 2D # Listos para crear la función linearconv() def linearconv(nx): dx = 2./(nx-1) nt = 20 # nt es el número de intervalos de tiempo que se desea calcular dt = .025 # dt es la cantidad de tiempo que cada incremento de tiempo comprende (delta t) c = 1 u = np.ones(nx) # definiendo array de numpy con nx elementos iguales a 1 u[.5/dx : 1/dx+1]=2 # estableciendo u = 2 entre 0.5 y 1 paras las condiciones iniciales (I.C.s) un = np.ones(nx) #nicializar el marcador de posición de conjunto de 'un', para almacenar la solución de tiempo instante por instante (n+1) for n in range(nt): # iteración a través del tiempo un[:] = u[:] ## copia los valores existentes de 'u' en 'un' for i in range(1,nx): u[i] = un[i]-c*dt/dx*(un[i]-un[i-1]) plt.plot(np.linspace(0,2,nx),u) linearconv(41) # convecction usando 41 puntos en la malla (mesh) linearconv(61) linearconv(71) linearconv(85) import numpy as np import matplotlib.pyplot as plt def linearconv(nx): dx = 2./(nx-1) nt = 20 # nt es el número de intervalos de tiempo que se desea calcular c = 1 sigma = .5 dt = sigma*dx u = np.ones(nx) u[.5/dx : 1/dx+1]=2 un = np.ones(nx) for n in range(nt): # teración a través del tiempo un[:] = u[:] ## copia los valores existentes de 'u' en 'un' for i in range(1,nx): u[i] = un[i]-c*dt/dx*(un[i]-un[i-1]) plt.plot(np.linspace(0,2,nx),u) linearconv(41) linearconv(61) linearconv(81) linearconv(101) linearconv(121) from IPython.display import YouTubeVideo YouTubeVideo('Yw1YPBupZxU') from IPython.core.display import HTML def css_styling(): styles = open("../styles/custom.css", "r").read() return HTML(styles) css_styling()