Para los proyectos descritos a continuación, los tres componentes siguientes serán evaluados con igual ponderación:
Matplotlib
.En cualquier caso usted es libre de diseñar los experimentos, mediciones de performance y de los resultados y gráficos a mostrar.
El Juego de la Vida es una aplicación de autómatas celulares (conjunto de reglas), para simular la formación de patrones en el crecimiento de colonias de organismos biológicos.
Este juego se representa por medio de un arreglo bi-dimensional de células vivas y células muertas. Las reglas para pasar de una generación a la otras son las siguientes (Existen diferentes variaciones, pero estas son las más comunes):
Aquí cada célula es representada como un píxel en una grilla/arreglo bi-dimensional.
Para más información visitar los siguientes links:
Este consiste en la simulación numérica de un sistem de N EDOs (Ecuaciones Diferenciales Ordinarias), que representan la dinámica de movimiento de un sistema de N partículas interactuando entre sí, como por ejemplo, en la interacción gravitacional de planetas y estrellas.
Sean un conjunto de $N$ cuerpos con masas $\{m_1, m_2, \ldots, m_N \}$, posiciones (2D) $\{\mathbf{x_1}, \mathbf{x_2}, \ldots, \mathbf{x_N} \}$ y velocidades $\{\mathbf{v_1}, \mathbf{v_2}, \ldots, \mathbf{v_N}\}$, que interactúan gravitacionalmente de acuerdo a la Ley de Gravitación Universal:
$$
\mathbf{F_{ij}} = G \frac{m_i m_j}{|| \mathbf{x_j} - \mathbf{x_i} ||^3}(\mathbf{x_j} - \mathbf{x_i}),
$$
correspondiente a la fuerza ejercida sobre el cuerpo i
, por el cuerpo j
. Entonces la dinámica del sistema viene descrita por la siguiente ecuación de movimiento (2da Ley de Newton):
$$
m_i \frac{d}{dt} \mathbf{v_i} = m_i \frac{d^2}{dt^2}\mathbf{x_i} = \sum_{j\neq i}^{N} \mathbf{F_{ij}} = \sum_{j \neq i}^{N} G \frac{m_i m_j}{|| \mathbf{x_j} - \mathbf{x_i} ||^3}(\mathbf{x_j} - \mathbf{x_i})
$$
Para el caso 2D: $\mathbf{x_i} = (x_i, y_j)$, $\mathbf{v_i} = (v_{x_i}, v_{y_i})$ y las ecuaciones que describen el movimiento quedan: $$ \frac{d^2}{dt^2}x_i = \frac{d}{dt}v_{x_i} = G \ \sum_{j\neq i}^{N}\frac{m_j}{(x_j-x_i)^2} = H(x_i) $$
$$ \frac{d^2}{dt^2}y_i = \frac{d}{dt}v_{y_i} = G \ \sum_{j\neq i}^{N}\frac{m_j}{(y_j-y_i)^2} = H(y_i) $$Se requiere resolver numéricamente la EDO para cada partícula del sistema. Para ello en cada componente de $\mathbf{x_i}$ y $\mathbf{v_i}$, se utiliza el método de Euler del siguiente modo ($\Delta t$ time step y $k$ número de iteración): $$ \Rightarrow v_{x_i}^{(k+1)} = H(x_i^{(k)}) \Delta t + v_{x_i}^{(k)} $$ $$ x_i^{(k+1)} = v_{x_i}^{(k+1)} \Delta t + x_i^{(k)} $$
$$ \Rightarrow v_{y_i}^{(k+1)} = H(y_i^{(k)}) \Delta t + v_{y_i}^{(k)} $$$$ y_i^{(k+1)} = v_{y_i}^{(k+1)} \Delta t + y_i^{(k)} $$(Primero se actualiza la velocidad, luego la posición). Estas dos iteraciones deben llevarse a cabo para todas las partículas del sistema, partiendo de condiciones iniciales $(x_i^0, y_i^0)$ y $(v_{x_i}^0, v_{y_i}^0)$ para todas las partículas.