In [1]:
"""
IPython Notebook v4.0 para python 2.7
Librerías adicionales: numpy, matplotlib
Contenido bajo licencia CC-BY 4.0. Código bajo licencia MIT. (c) Sebastian Flores.
"""

# Configuracion para recargar módulos y librerías 
%reload_ext autoreload
%autoreload 2

from IPython.core.display import HTML

HTML(open("style/mat281.css", "r").read())


Out[1]:






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

Motivación

Motivación

¿Porqué hay tanta diferencia entre el mundo académico y el mundo industrial?

Motivación

Motivación

¿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?


In [2]:
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()


¿Cómo?

¿Porqué python?


In [3]:
from mat281_code import black_box
black_box.iplot()


¿Cómo?

Pero profe, yo no sé programar...

¿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$$

In [9]:
# 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()


3.02
1.2 0.81215762017

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:


In [10]:
# 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))


Promedio angular: 3.02 [rad] ó 173.03 [deg]

In [11]:
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()


Ejemplo 1: Contexto

Si suponemos que el radio es constante, podemos realizar un promedio de posiciones espaciales:


In [12]:
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))


Promedio espacial: 3.10 [rad] ó 177.46 [deg]

In [13]:
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$]")


Out[13]:
<matplotlib.text.Text at 0x7ff51870f5d0>

Ejemplo 2: Aplicación de conocimiento

Ejemplo real:

Ejemplo 2: Aplicación de conocimiento

  • Dominio ha sido mallado utilizando triangulos no regulares.
  • Método numérico require extender el dominio generando "ghost-cells" para poder aplicar condiciones de frontera.
  • ¿Cómo podemos obtener el borde y generar automáticamente las ghost-cells?

Ejemplo 2: Aplicación de conocimiento

Condiciones de Frontera Periódicas

Ejemplo 2: Aplicación de conocimiento

Condiciones de Frontera Reflectantes

Ejemplo 2: Aplicación de conocimiento

Condiciones de Frontera No Reflectantes

Ejemplo 2: Aplicación de conocimiento

  • ¿Cómo simplificar y modelar el problema (matemáticamente)?
  • ¿Cómo implementar una solución compatible con la estructura actual del problema?

Ejemplo 3: Visualización

Visualización de resultados es crucial.

Ejemplo 3: Visualización

Problemas del gráfico anterior

  • Requiere interacción 3D para comprender la superficie.
  • No se pueden inferir valores a partir del gráfico.
  • Mapa de colores es arbitrario y engañoso.

Ejemplo 3: Visualización

Solución

Regla de las 10,000 horas

  • Toda habilidad require trabajo

    • Matemática
    • Ingeniería
    • Programación

    Este curso desarrollaremos habilidades para poder facilitarles su trabajo en ingeniería: el mundo de los datos reales y de las aproximaciones.

Resumen

  • Curso atípico: interactivo y enfásis en vinculación a "mundo real"
  • Trabajo con datos reales: esencial
  • Programaremos en python
  • Para aprobar: ¡trabajar!