Primer examen parcial

Simulación matemática.

  • Lázaro Alonso
  • Año : 2017
  • Email: `alonsosilva@iteso.mx, lazarus.alon@gmail.com`

Estudiante:

Diego Parra Pereda ic698296

Indicaciones:

  • Todos aquellos cuya inicial de su primer apellido este entre la A y la L tienen que hacer la Actividad 1.1 del problema 1.
  • Todos aquellos cuya inicial de su primer primer apellido este entre la M y la Z tienen que hacer la Actividad 1.2 del problema 1.
  • Todos aquellos cuya inicial de su primer apellido este entre la M y la Z tienen que hacer el problema 2.
  • Todos aquellos cuya inicial de su primer apellido este entre la A y la L tienen que hacer el problema 3.

**El objetivo final es que logren juntar 60 puntos. Es decir resolver 2 problemas por completo. **

Problema 1.

Considere un oscilador armónico simple(péndulo), cuya variación en $\theta$ está dada por:

\begin{equation} \theta(t) = \theta(0) \cos(\omega_{0} t) + \frac{\dot{\theta}(0)}{\omega_{0}} \sin(\omega_{0} t) \end{equation}

Considere la siguiente función que calcula $\theta$ en $t$. Para responder las siguientes actividades.


In [4]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

In [5]:
def theta_t(theta_0, theta_0_dot, g, l, t):
    omega_0 = np.sqrt(g/l)
    return theta_0 * np.cos(omega_0 * t) + theta_0_dot * np.sin(omega_0 * t)/omega_0

Ahora si gráficamos al péndulo en las coordenas $x,y$, se obtiene algo similar a lo siguiente:


In [6]:
t = np.linspace(0,10)

In [7]:
fig = plt.figure(figsize = (5,5))
ax = fig.add_subplot(1, 1, 1)

x = 2 * np.sin(theta_t(.4, .6, 9.8, 2, t))
y =  - 2 * np.cos(theta_t(.4, .6, 9.8, 2, t))
ax.plot(x, y, 'ko', ms = 1.5)
ax.plot([0], [0], 'rD')
ax.set_xlim(xmin = -2.2, xmax = 2.2)
ax.set_ylim(ymin = -2.2, ymax = .2)
plt.show()


Actividad 1.1

  • Modificar el programa anterior para que el pédulo describa una trayectoria completamente circular. (10 puntos)
  • Indicar en el caso anterior con código de colores, los momentos en que el péndulo se encuetra por arriba del cero en $y$ y cuando se encuentra por debajo. (10 puntos)
  • Considere un conjunto de péndulos, con las siguientes longitudes: $$ l = [0.5, 1, 2, 4, 8, 16]. $$ Realice una representación similar a la anterior, pero ahora para todos los péndulos representados en la misma gráfica y cada uno con diferente color. Discutir resultados.(10 puntos)

Actividad 1.2

  • Modificar el programa anterior para que el pédulo describa una trayectoria semi-circular. (10 puntos)
  • Indicar en el caso anterior con código de colores, los momentos en que el péndulo se encuetra tienes coordenas en $x$ negativas y cuando se encuentra en positivas. (10 puntos)
  • Considere un conjunto de péndulos con la misma longitudes, pero con diferentes gravedades: $$ g = [0.5, 1, 2, 4, 8, 16]. $$ Realice una representación similar a la anterior, pero ahora para todos los péndulos representados en la misma gráfica y cada uno con diferente color. Discutir resultados. (10 puntos)

In [8]:
# Respuesta
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

In [9]:
def theta_t(theta_0, theta_0_dot, g, l, t):
    omega_0 = np.sqrt(g/l)
    return theta_0 * np.cos(omega_0 * t) + theta_0_dot * np.sin(omega_0 * t)

In [10]:
t = np.linspace(0,10)

In [74]:
fig = plt.figure(figsize = (7,5))
ax = fig.add_subplot(1, 1, 1)

x = 2 * np.sin(theta_t(1.57, .6, 9.8, 2, t))
y =  - 2 * np.cos(theta_t(1.57, .6, 9.8, 2, t))

ax.plot(x, y, 'bd', ms = 5)
ax.plot([0], [0], 'gD')

ax.set_xlim(xmin = -2.2, xmax = 2.2)
ax.set_ylim(ymin = -2.2, ymax = .2)

plt.show()



In [12]:
# Respuesta
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

In [13]:
def theta_t(theta_0, theta_0_dot, g, l, t):
    omega_0 = np.sqrt(g/l)
    return theta_0 * np.cos(omega_0 * t) + theta_0_dot * np.sin(omega_0 * t)

In [14]:
t = np.linspace(0,10)

In [76]:
fig = plt.figure(figsize = (7,5))
ax = fig.add_subplot(1, 1, 1)
x = 2 * np.sin(theta_t(1.57, 0, 9.8, 2, t))
y =  - 2 * np.cos(theta_t(1.57, 0, 9.8, 2, t))
ax.plot(x, y, 'bo', ms = 3)
ax.plot([0], [0], 'gD')
ax.set_xlim(xmin = -3, xmax = 3)
ax.set_ylim(ymin = -3, ymax = .3)
plt.show()



In [16]:
z=x[x<0]
z


Out[16]:
array([-0.30186704, -1.9983598 , -1.02749371, -0.14489145, -1.39360214,
       -1.86161016, -0.04106839, -0.55933681, -1.99448644, -0.89678283,
       -0.22379964, -1.51784312, -1.75725738, -0.07448834, -0.80619655,
       -1.96541933, -0.76954944, -0.31260143, -1.6341099 , -1.62394097,
       -0.09702228, -1.0379322 , -1.91350047, -0.64744785])

In [17]:
len(x[x<0])


Out[17]:
24

In [18]:
np.where(x<0)


Out[18]:
(array([ 4,  5,  6,  8,  9, 10, 14, 18, 19, 20, 22, 23, 24, 28, 32, 33, 34,
        36, 37, 38, 42, 46, 47, 48], dtype=int64),)

In [19]:
x1=x[np.where(x<0)]

In [20]:
x2=x[np.where(x>0)]

In [21]:
y2=y[np.where(x>0)]

In [22]:
y1=y[np.where(x<0)]

In [61]:
fig = plt.figure(figsize = (6,3))

ax = fig.add_subplot(1, 1, 1)

ax.plot(x1, y1, 'm*')
ax.plot(x2, y2, 'cd')

ax.set_xlim(xmin = -3, xmax = 3)
ax.set_ylim(ymin = -3, ymax = .3)

plt.show()



In [24]:
gravedad = np.array ([.5, 1, 2, 4, 8, 16])

In [25]:
def theta_t(theta_0, theta_0_dot, g, l, t):
    omega_0 = np.sqrt(g/l)
    return theta_0 * np.cos(omega_0 * t) + theta_0_dot * np.sin(omega_0 * t)
for indx, g in enumerate (gravedad):
    x = 2 * np.sin(theta_t(.4, .6, g, 2, t))
    y =  - 2 * np.cos(theta_t(.4, .6, g, 2, t))
(x)
(y)


Out[25]:
array([-1.84212199, -1.57677382, -1.51605737, -1.72746099, -1.96956477,
       -1.94483457, -1.68463644, -1.50548102, -1.61004451, -1.88161607,
       -1.99691442, -1.81044119, -1.55512314, -1.52867729, -1.76045012,
       -1.98366094, -1.92206326, -1.65368812, -1.50229101, -1.63810197,
       -1.90884522, -1.98938026, -1.77779414, -1.53683788, -1.54507564,
       -1.79336931, -1.99351017, -1.89624236, -1.62450615, -1.50328465,
       -1.66818486, -1.93327734, -1.97748629, -1.74476879, -1.52220435,
       -1.56499714, -1.82563092, -1.99891792, -1.86786376, -1.5975737 ,
       -1.50844681, -1.69979106, -1.95444438, -1.96146692, -1.7119499 ,
       -1.51144928, -1.58812811, -1.85664942, -1.99977701, -1.8374612 ])

In [65]:
cmap= ['red','blue','green','black','orange',]

In [88]:
fig = plt.figure(figsize = (15,10))
for indx, g in enumerate (gravedad):
    ax = fig.add_subplot(1, 1, 1)
    x = 2 * np.sin(theta_t(1.57, 0, g, 2, t))
    y =  - 2 * np.cos(theta_t(1.57, 0, g, 2, t))
    plt.scatter(x,y, cmap = 'inferno', s= 35, lw=0)
ax.plot(x, y, 'k*', ms = 7)
ax.plot([0], [0], 'gD')
ax.set_xlim(xmin = -2.2, xmax = 2.2)
ax.set_ylim(ymin = -2.2, ymax = .2)
plt.show()



In [ ]:


In [ ]:

Problema 2.

Ley de Newton de enfriamiento

La ley empírica de Newton, relativa al enfriamiento de un objeto, se expresa con la ecuación diferencial lineal de primer orden

$$\frac{dT}{dt} = k (T - T_m)$$

donde $k$ es una constante de proporcionalidad, $T$ es la temperatura del objeto para $t>0$


In [28]:
def temperatura(T, Tm, k, t):
    return k*(T - Tm)

In [29]:
# usar odeint para encontrar la solución. (Puede ayudarle la clase de mapa logistico)

In [30]:
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
%matplotlib inline

Actividad 2.1 ¿Cuánto esperar para tomar el café?

Primero calentamos agua a 80°C . Posteriormente agregamos café al vaso con el agua caliente. Después realizamos la medición de la temperatura ambiente, la cual fue de 24°C.

  • Simula el sistema en un tiempo de 0 a 120 unidades de tiempo con una constante de proporcionalidad $k=−0.0565$. (10 puntos)
  • Supoga que cada unidad de tiempo corresponde a un minuto. ¿En que tiempo aproximadamente la temperatura es menor a 30°C ? (10 puntos)
  • Busca una constante de proporcionalidad $k$ en un rango ( de −0.2 a 0.2 con incremento de 0.01), para la cual el café tiene una temperatura menor de 30°C en un tiempo a 20 minutos. (10 puntos)

In [95]:
def temperatura(T,t):
    k=-.0565
    Tm=34
    return k*(T-Tm)
t = np.linspace(0,120)
T0=80
t = np.linspace(0,120)
respuesta = odeint(temperatura,T0,t)
plt.plot(t,respuesta)
plt.xlabel('$t$', fontsize = 40)
plt.ylabel('$T$', fontsize = 40)
plt.show()


Problema 3.

Interés simple vs interés compuesto.

  • Simple

    Recuerden $C_k$ es la meta $$C_k=C_0(1+ki).$$

  • Compuesto
    $$C_k=C_0(1+i)^k.$$

Actividad 3.1

  • Realice un análisis comparativo del numero de periodos para llegar a la misma meta, considerenado el mismo interés $i$. Gráfique en la misma figura. (10 puntos)
  • Considere diferentes escenarios de interés. Usted elija. (10 puntos)
  • Discuta las ventajas o desventajas de los diferentes modelos. En el supuesto de que ustedes son el banco. (10 puntos)

In [33]:
# Respuesta

In [ ]:


In [ ]:


In [ ]:


In [ ]: