<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 <header class="w3-container w3-teal">
<img src="images/utfsm.png" alt="" height="100px" align="left"/>
<img src="images/mat.png" alt="" height="100px" align="right"/>
</header>
<br/><br/><br/><br/><br/>
MAT281
Aplicaciones de la Matemática en la Ingeniería
Sebastián Flores
https
Step1:  ¿Cómo?
¿Porqué python?
Step2:  ¿Cómo?
Pero profe, yo no sé programar...
python es multipropósito.
ICM debe saber trabajar con datos.
Énfasis en aplicar, no en programar desde cero. 
Todas las clases, códigos y lecturas
Step3:  Ejemplo 1
Step4:  Ejemplo 1
<ASSISTANT_TASK:>
Python Code:
from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(1E-8,np.pi/6,1000)
y = x*np.sin(1./x)
plt.plot(x, y)
plt.plot(x, x)
plt.plot(x, -x)
plt.show()
Explanation: <header class="w3-container w3-teal">
<img src="images/utfsm.png" alt="" height="100px" align="left"/>
<img src="images/mat.png" alt="" height="100px" align="right"/>
</header>
<br/><br/><br/><br/><br/>
MAT281
Aplicaciones de la Matemática en la Ingeniería
Sebastián Flores
https://www.github.com/sebastiandres/mat281
¿Qué contenido aprenderemos?
¿Quién?
¿Porqué?
¿Qué?
¿Cómo?
¿Cuándo?
¿Quién soy?
Ingeniero Civil Matemático - UTFSM, Chile (2000).
Ingeniero y Magíster en Mecánica - Ecole Polytechnique, Francia (2005).
Magíster en Computación y Matemática Aplicada - Stanford, EEUU (2010).
Esval, Peugeot-Citroen, Lexity, CMM-UCh, Thinkful.
Proyectos de mecánica de sólidos y fluidos, minería, química y sismología. 
¿Quién soy?
Actualmente
Clases en el mundo real: IWI131 y MAT281
Clases online: Data Science @ Thinkful
Programando software para propagación de tsunamis
¿Porqué aprenderemos ese contenido?
Reglas claras desde un comienzo.
Ilustración de lo que veremos en el curso.
¿Porqué?
¿Porqué me gusta dictar este curso?
Flexibilidad temática
Potencial de los alumnos
Compartir mi experiencia como ICM
Motivación
Mi experiencia como ICM recién egresado
<img src="images/AG1.png" alt="" align="middle"/>
Motivación
<img src="images/AG2.png" alt="" align="middle"/>
Motivación
¿Porqué hay tanta diferencia entre el mundo académico y el mundo industrial?
Motivación
<img src="images/XKCD_purity1.png" alt="" align="middle"/>
Motivación
<img src="images/XKCD_purity2.png" alt="" align="middle"/>
¿Qué?
Programa del curso
Unidad 1: Introducción y Proyectos.
Unidad 2: Herramientas transversales en ingeniería.
Unidad 3: Modelamiento y error.
Unidad 4: Trabajando con datos reales.
¿Cómo?
Elementos centrales del curso
Proyecto central: trabajar con datos reales.
Tareas: desarrollos analíticos y componente práctica.
Laboratorios: prácticos.
Ayudantías: según se necesite.
Clases interactivas.
No hay certámenes ni lecturas, pero sí mucho trabajo.
¿Cómo?
Lenguaje de comunicación
Tareas y proyectos deben ser escritos en latex!
Lenguaje de programación
Programaremos en python, con las librerías numpy, scipy, matplotlib, sklearn.
Haremos uso en clase y laboratorios de ipython y ipython notebook (jupyter)
¿Cómo?
¿Porqué python?
End of explanation
from mat281_code import black_box
black_box.iplot()
Explanation: ¿Cómo?
¿Porqué python?
End of explanation
# Calculando el promedio
x = np.array([1.2, 2.2, 2.6, 3.1, 3.1, 3.2, 3.3, 3.6, 3.6, 4.3])
print(x.mean())
print x.min(), x.std()
Explanation: ¿Cómo?
Pero profe, yo no sé programar...
python es multipropósito.
ICM debe saber trabajar con datos.
Énfasis en aplicar, no en programar desde cero. 
Todas las clases, códigos y lecturas: https://github.com/sebastiandres/mat281
<img src="images/saint_curious_george.png" alt="" align="middle"/>
¿Cuándo?
Clases
Lunes: bloque 3-4.
Miercoles: bloque 3-4.
Ayudantía
Por fijar.
¿Cuándo?
Fechas importantes
Ver programa. 
Evaluables
En resumen:
* 4 Tareas
* 5 Laboratorios
* 1 Anteproyecto, 1 Avance de proyecto y 1 Presentación de Proyecto.
$$ NF = 40\% T + 20 \% L + 40\% P$$
Ejemplo 1 : Contexto
Todo problema depende fuertemente del contexto
¿Cuál es el valor promedio de los siguientes valores?
$$1.2,\  2.2,\  2.6,\  3.1,\  3.1,\  3.2,\  3.3,\  3.6,\  3.6,\  4.3$$
End of explanation
# Calculando el promedio
x = np.array([1.2, 2.2, 2.6, 3.1, 3.1, 3.2, 3.3, 3.6, 3.6, 4.3])
x_mean = x.mean()
print("Promedio angular: {0:.2f} [rad] ó {1:.2f} [deg]".format(x_mean, x_mean*180/np.pi))
plt.figure(figsize=(14,3))
plt.plot(x, 0*x, 'go', alpha=0.75)
plt.plot([x.mean(), x.mean()], [-1,1], '-g', lw=2.0)
plt.gca().set_yticks([])
plt.show()
Explanation: Ejemplo 1: Contexto
¿Cómo cambia su respuesta si se sabe que $x$ es una medición angular?
Lo anterior representa un promedio de los valores angulares:
End of explanation
cos_mean = np.cos(x).mean()
sin_mean = np.sin(x).mean()
trig_mean = np.arctan2(sin_mean, cos_mean)
print("Promedio espacial: {0:.2f} [rad] ó {1:.2f} [deg]".format(trig_mean, trig_mean*180/np.pi))
plt.figure(figsize=(12,12))
aux_th = np.arange(0,1000.)*2*np.pi/1000.
r = (cos_mean**2 + sin_mean**2)**.5
plt.plot(0, 0, 'k.', alpha=0.25)
plt.plot(np.cos(aux_th), np.sin(aux_th), 'k-', alpha=0.25)
plt.plot(np.cos(x), np.sin(x), 'b*', alpha=0.75, ms=16)
plt.plot(np.cos(x_mean), np.sin(x_mean), 'go', alpha=1.0, ms=16, label=r"$(\cos(\overline{\theta}),\sin(\overline{\theta}))$") 
plt.plot(cos_mean, sin_mean, 'rs', alpha=1.0, ms=16, label=r"$(\overline{\cos(\theta}),\overline{\sin(\theta}))$") 
plt.plot(cos_mean/r, sin_mean/r, 'rs', alpha=0.5, ms=16, label=r"$(\overline{\cos(\theta}),\overline{\sin(\theta}))$") 
plt.xlim([-1.1, 1.1])
plt.ylim([-1.1, 1.1])
plt.legend(loc="lower right", fontsize=20, numpoints=1)
plt.xlabel(r"$x=cos(\theta)$ [$L$]")
plt.ylabel(r"$x=sin(\theta)$ [$L$]")
Explanation: Ejemplo 1: Contexto
Si suponemos que el radio es constante, podemos realizar un promedio de posiciones espaciales:
End of explanation
<END_TASK>