#P1
La ecuación de Fisher-KPP es una llamada ecuación de reacción-difusión que busca modelar el comportamiento de una especie animal. A continuación se presenta su versión en 1D:
Latex:
\frac{\partial n}{\partial t} = \gamma \frac{\partial^2n}{\partial x^2} + \mu n - \mu n^2
La variable n = n(t, x) describre la densidad de la especie como función del tiempo y la posición. Los 3 términos del lado derecho corresponden a:
- μn : la tendencia de la especie a crecer indefinidamente (suponiendo que los recursos sean infinitos).
- –μn2 : Despues de un tiempo, el aumento en densidad creará competencia por los recursos, lo que tenderá a disminuir la densidad.
- γ ∇ n : La tendencia de la especie a dispersarse para encontrar más recursos.
La ecuación tiene dos puntos de equilibrio n=0 y n=1, pero solo el segundo es estable. Las soluciones tienen un comportamiento que es una mezcla de difusión y un pulso viajero.
Para resolver la ecuación discretice la parte de difusión usando el método de Crank–Nicolson, y el método de Euler explícito para la parte de reacción. Resuelva la ecuación para x entre 0 y 1 con γ = 0.001 y μ = 1.5. Discretice el espacio en aproximadamente 500 puntos y considere las siguientes condiciones de borde:
Latex:
\begin{flalign*} n(t, 0) &= 1\\ n(t, 1) &= 0\\ n(0, x) &= e^{-x^2/0.1} \end{flalign*}
Por último, elija su paso temporal de modo que la solución sea estable e integre hasta al menos t = 4 (en las unidades en que están escritas las ecuaciónes y las constantes).
Presente la solución encontrada e interprete los resultados.
#P2
La ecuación de Newell-Whitehead-Segel es otra ecuación de reacción-difusión que describe fenómenos de convección y combustión entre otros. La ecuación es la siguiente:
Latex:
\frac{\partial n}{\partial t} = \gamma \frac{\partial^2n}{\partial x^2} + \mu ( n - n^3)
Esta vez la ecuación tiene 3 puntos de equilibrio n = 0 (inestable) y n =± 1 (estables). Explique en argumentos simples por qué son estables.
Integre esta ecuación siguiendo la misma estrategia que en la pregunta anterior (mismas constantes también) pero con las siguientes condiciones de borde:
Latex:
\begin{flalign*} n(t, 0) &= 0\\ n(t, 1) &= 0\\ n(0, x) &= \texttt{np.random.uniform(low=-0.3, high=0.3, size=Nx)} \end{flalign*}
Si resolvió la pregunta anterior de manera ordenada y modular, entonces sólo necesitará hacer un par de pequeños cambios a su código.
Nota: las condiciones iniciales son aleatorias. Asegúrese de setear las condiciones de borde (n = 0 para x=0, 1) despues de asignar las condiciones aleatorias. También es importante setear la semilla al principio del script (
np.random.seed(<algún int>)
), de esa manera su resultado será reproducible y no cambiará cada vez que ejecute el script.
Cambie la semilla un par de veces y estudie los cambios en su resultado.
Presente sus resultados mediante los gráficos que le parezcan relevantes e interprete los resultados.
Otras Notas.
-
Utilice
git
durante el desarrollo de la tarea para mantener un historial de los cambios realizados. La siguiente cheat sheet le puede ser útil. Evaluar el uso efectivo degit
. Recuerde hacer cambios significativos pero relativamente pequeños y guardar seguido. Evite hacercommits
de código que no compila y deje mensajes que permitan entender los cambios realizados. -
Evaluaremos su uso correcto de python. Si define una función relativamente larga o con muchos parámetros, recuerde escribir el doctsring que describa los parametros y que es lo que hace la función. También recuerde usar nombres explicativos para las variables y las funciones. El mejor nombre es aquel que permite entender que hace la función sin tener que leer su implementación.
-
Los códigos entregados deben pasar las reglas de PEP8. En la línea de comando puede intentar
pep8 <script.py>
y asegurarse de que no hay errores ni advertencias. Los comandospep8 --show-source <script.py>
ypep8 --show-pep8 <script.py>
que vimos en clase le pueden ser útiles. Si es de aquellos que resuelven su tarea usando elipython notebook
, entonces exporte la tarea a un archivo normal depython
y asegúrese de que pasa el test de PEP8. -
La tarea se entrega como un pull request en github. El pull request debe incluir todos los códigos usados además de su informe.
-
El informe debe ser entregado en formato pdf, este debe ser claro sin información ni de más ni de menos.