Notebook created by Martín Villanueva - martin.villanueva@usm.cl
- DI UTFSM - May 2017.
In [3]:
import numba
import numexpr as ne
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
En la presente actividad simularemos y visualizaremos un sistema dinámico 2-dimensional simple. Para ello resolveromos una EDO numéricamente, utilizando el método de Euler.
Consideremos un sistema de $N$ partículas $(x_i(t), y_i(t))$ en el dominio $[0,1]\times[0,1]$, cuyo movimiento se rige por las siguientes ecuaciones (EDOs autónomas):
\begin{align} \frac{dx}{dt} &= \text{tanh}(x^2+y^2), \text{ con } x(0)=x_0, \\ \frac{dy}{dt} &= \text{tanh}(x^2+y^2), \text{ con } y(0)=y_0 \\ \end{align}El método de Euler para resolver este problema numéricamente, consiste en realizar la siguiente aproximación para la derivada:
\begin{align} \frac{x_{i+1}-x_i}{\Delta t} = \text{tanh}(x_i^2+y_i^2) \rightarrow x_{i+1} = x_i + \Delta t \cdot \text{tanh}(x_i^2+y_i^2) \\ \frac{y_{i+1}-y_i}{\Delta t} = \text{tanh}(x_i^2+y_i^2) \rightarrow y_{i+1} = y_i + \Delta t \cdot \text{tanh}(x_i^2+y_i^2) \end{align}ocupando las condiciones iniciales $x_0$ e $y_0$ como puntos de partida. Aquí $\Delta t$ (time step) es un parámetro definido por usted, y usualmente toma valores pequeños.
Notar que esta ecuación es válida para una partícula, y por tanto para simular un sistema de $N$ de estas, es necesario realizar esta actualización para cada partícula $(x_i,y_i)$ con $i \in [1,N]$.
Se solicita que realice lo siguiente:
100
puntos aleatoriamente distribuidos en el espacio $[0,1]\times[0,1]$ (Seran usados como posiciones iniciales del sistema). Grafíque el conjunto de puntos obtenidos.simular(x0, y0, dt, tf)
que reciba los np.ndarray
con las coordenadas iniciales x0
e y0
del sistema, el time step dt
(seleccione un valor pequeño $\sim 0.01$) y el tiempo final de simulación. Esta función debe graficar el conjunto de puntos del sistema, en su tiempo final.interact
desarrolle un widget para visualizar interactivamente distintos estados finales del sistema (distintos tf
).
In [ ]: