Métodos Matemáticos Computacionales para Ciencia de Datos
Evaluación
1.- Se evaluará con 2 exámenes parciales (el 1ro es colegiado), 2 tareas y un proyecto. El Periodo 1 tiene un valor de 40% y el Periodo 2 tiene un valor de 60% de la calificación.
El Periodo i tiene la evaluación Pi como sigue: La Tarea i da derecho al Examen i. Sean Ti y Ei las calificaciones respectivas. Si Ti es al menos 6, entonces Pi es el techo de Ei, sino, Pi es el piso de Ei, donde i=1,2.
Para la Calificación final CF se obtiene como sigue: Si tanto T1 como T2 son al menos 6, entonces CF es el techo de 0.4P1+0.6P2, sino CF es el piso de P1+P2.
Fecha del Examen parcial 1: lunes de la semana 10.
Fecha del Examen parcial 2: miércoles de la semana 16.
Para poder presentar exámen final (ordinario), es necesario que el alumno haya obtenido 5 en su evaluación, ver artículo 10 liga.
2.- Presentar examen final (ordinario) en 1ra o 2da vuelta, y su calificación se pone en actas.
Aviso: El día lunes 21 y miércoles 23 no hay clase ya que asistiré al Congreso Nacional de la SMM liga
Temario, horario y bibliografía
Temario link
Horario: lunes y miércoles de 5 a 8pm, salón 1523.
Bibliografía
Burden, Faires, Burden. (2017). Análisis Numérico. Cengage Learning.
Boyd, Vandenberghe. (2004). Convex Optimization. Cambrige.
Overton, M. (2002). Cómputo Numérico con Aritmética de punto flotante IEEE. Aportaciones Matemáticas, SMM/SIAM.
Reglas de clase & Zoom
No se guarda calificación.
No se aceptan calificaciones de otros cursos.
No se cambian calificaciones (ni 5 por NP, ni NP por 5).
Las actividades no se reciben de forma extemporánea.
Las tareas se entregan el día del examen.
Los examenes se devuelven al profesor.
La clase termina 5 minutos antes de la hora.
No se aceptan alumnos oyentes.
No se permiten acompañantes de clase.
Uso recomendado de cubrebocas.
No ingerir alimentos en clase.
Limitar el uso del celular en clase incluyendo no hablar por teléfono en clase.
Acerca de Zoom (en caso de ser requerido)
La plataforma que usaremos para tomar clase es zoom mediante el registro del campus virtual.
Previo a cada clase se enviará la liga por su correo pcpuma
Usar una foto de perfil donde se vea su rostro de frente
Acceder a la plataforma con su nombre completo, sin video ni audio para no sobrecargar la red
La participación será a través de video y audio
Sobre Julia, Jupyter Notebook y su instalación
· Sobre Julia: En este curso se hará uso del lenguaje de programación de Julia ya que es un lenguaje de programación de alto nivel que ofrece una facilidad comparable a Python, pero una potencia y velocidad comparable al lenguaje C. Julia es un lenguaje de programación dinámico creado por el Departamento de Ciencias de la Computación del MIT en el año 2009; desarrollado por Jeff Bezanson, Stefan Karpinski, Viral B. Shah y Alan Edelman, liberado gratuitamente en 2012.
Karpinski, uno se su creadores, comenta que Julia empodera a científicos de datos, físicos, comerciantes de finanzas cuantitativas y diseñadores de robots para resolver problemas sin tener que convertirse en programadores informáticos o contratar programadores informáticos para traducir sus funciones en código informático, ver [D’Cunha, 2017]. Para ver la eficiencia de Julia en un gráfico, ver [JuliaLang.org-Contributors, 2023].
Actualmente Julia está en constante crecimiento. Para dimensionar esto, se tiene como referentes a las grandes compañias como Amazon, Apple, Disney, Facebook, Ford, Google, Blackrock, IBM, Microsoft o NASA, las cuales están contratando significativamente a programadores de Julia, ver [D’Cunha, 2017]. De acuerdo con GitHub, en 2017, Julia esta en el top 10 de lenguajes con mayor desarrollo dentro de su plataforma [Claster, 2017].
· Sobre Jupyter Notebook: Por otro lado, el proyecto Jupyter es un software de código abierto, gratuito y libre. Uno de sus productos es Jupyter Notebook que es un entorno interactivo basado en la web para crear documentos. Contiene una lista ordenada de celdas de entrada/salida para contener código, texto (incluyendo LaTeX), matemáticas o gráficos. Soporta entornos de ejecución, llamados núcleos, en varios lenguajes, tales como Julia, R o Python. Sus archivos usan la extensión .ipynb.
La interfaz computacional de Jupyter Notebook es similar a la interfaz de notebook de otros programas como Mathematica, Maple o SageMath que se originó con Mathematica en la década de 1980, ver [Somers, 2018].
· Sobre la instalación: La guía de instalación la haremos pensando en los usuarios de Windows ya que es el más usado. Julia se puede instalar en las versiones de Windows 7 y posteriores. La instalación de Julia la podemos hacer con los siguientes pasos:
Descargaremos el archivo de instalación desde la página oficial de Julia. Buscaremos el archivo que se adapte a nuestro equipo puede ser de 32 bits o de 64 bits.
Una vez descargado, ejecutamos el archivo de instalación y seguimos las indicaciones.
Si todo va bien, ya podremos ejecutar Julia dando clic en el ícono, el cual abrirá una terminal y aparecerá la línea
julia>
Frecuentemente requerimos instalar paquetes, en la terminal indica como ir al modo de instalar paquetes, esto es, tecleamos
julia> ]
y automáticamente aparecerá
(@v1.9) pkg
"v1.9" es la versión instalada de Julia. Allí vamos a escribir
(@v1.9) pkg add IJulia
+ Enter a lo que comenzará la instalación de ese paquete para poder iniciar los Notebooks. Posteriormente escribimos
(@v1.9) pkg add Plots
+ Enter a lo que comenzará la instalación del paquete para graficar. Para saber los paquetes instalados, escribimos
(@v1.9) pkg status
Para salir del modo de instalación de paquetes tecleamos
(@v1.9) pkg ⌫
es decir, la tecla "Del" o "Backspace", a lo obtenemos
julia>
Ahora escribimos
julia> using IJulia
para compilar ese paquete. Posteriormente escribimos
julia> notebook()
Esto nos permitirá el acceso a Julia en el repositorio de Jupyter. La primera vez que se corren estos comandos solicita el permiso de una instalación mínima de Python vía Conda. Lo permitiremos al escribir
julia> y
En el caso de Windows, podría generarse un error de instalación que se puede evitar deshabilitando temporalmente su antivirus. Entonces, en nuestro navegador se despliega una página donde se va a trabajar en los Notebooks.
En esa página se muestra una carpeta que está en su ordenador, como podrá verificar. Para abrir los notebooks previamente descargados (o clonados) nos dirigimos a la carpeta “Downloads” (o “Descargas” según el idioma de su ordenador). Dando clic sobre los archivos .ipynb accedemos a ellos.
Para cerrar correctamente damos clic en "Quit" (parte superior-derecha del navegador) en la primer página desplegada. Ya puede cerrar la página e ir a la terminar de Julia, donde verá nuevamente .
julia>
Para salir correctamente de la terminal escribimos exit() + Enter.
Tarea
Estaré actualizando la tarea por semana.
TAREA 1.
Semana 1.
Repasar tipos de error, notación asintótica, solución numérica de una variable.
Realizar un resumen de las unidades 1 del libro de Overton.
Notebook: Introducción al uso de Julia liga
Implementar en Julia el algoritmo 6.1, 6.2 y 6.3
Semana 2.
Realizar un resumen de las unidades 2&3 del libro de Overton.
Notebooks: Uso de números en Julia liga & Operaciones de Julia liga
Implementar en Julia el algoritmo 6.5 y un algoritmo de mínimos cuadrados.
Semana 3.
Realizar un resumen de las unidades 4&5 del libro de Overton.
Notebooks: Uso de funciones en Julia liga & Arreglos de Julia liga
Revisar superficies cuádricas y graficar usando el polinomio característico así como los valores y vectores característicos de
2x^2-√3 xy+y^2=1.
2x^2+y^2+z^2+2xy+2xz=9.
2xy+2xz+2yz-4x +6y +3=0.
3x^2-y^2+4xz-10x +2y-4z +3=0.
De los ejemplos anteriores, considere el sistema Ax=b para obtener los vectores propios. Aplique la matriz pseudoinversa para obtener la solución de mínimos cuadrado para cada valor propio.
Semana 4.
Realizar un resumen de la unidad 6 del libro de Overton.
Notebooks: Uso de Markdown en Julia liga
Implementar en Julia el algoritmo 9.2&9.3.
Semana 5.
Realizar un resumen de la unidad 7 del libro de Overton.
Notebooks: Uso de datos en Julia liga
Implementar en Julia el algoritmo 9.4 y 7.1.
Semana 6.
Realizar un resumen de las unidades 8&9 del libro de Overton.
Notebooks: Instrucciones de Julia liga
Implementar en Julia el algoritmo de Jacobi para valores y vectores propios así como el de Descomposición en Valores Singulares.
Semana 7.
Notebooks: Uso de guardar una función en Julia liga
Del ejemplo de https://juliastats.org/MultivariateStats.jl/dev/pca/ aplicar el método de la matriz de covarianzas de manera independiente a la función de Julia.
Del ejemplo de https://dlegorreta.wordpress.com/2015/03/13/un-ejemplo-sencillo-sobre-analisis-de-componentes-principalespca-principal-components-analysis/ realizarlos con Julia.
Tarea 2 libro burden
Semana 8.
Realizar un resumen de las unidades 10&11 del libro de Overton.
Implementar en Julia el algoritmo de Diferencias divididas y Hermite.
Realizar ejercicios del capítulo correspondiente de Burden (diferencias divididas y polinomio de Hermite).
Semana 9/10.
Realizar un resumen de las unidades 12&13 del libro de Overton.
Implementar en Julia el algoritmo de trazadores cúbico.
Realizar ejercicios del capítulo correspondiente de Burden (trazadores cúbicos).
Semana 11.
Realizar un resumen de la unidad 14 del libro de Overton.
Realizar al menos 2 ejercicios de cada subsección 8.2-8.6 del libro de Burden (teoría de aproximación).
Semana 12. Llenar la encuesta de enseñanza-aprendizaje: https://encuestas.acatlan.unam.mx/aprendizaje/
Semana 13. Realizar 10 ejercicios del capítulo 2 del libro de Boyd (conjuntos convexos).
Semana 14. Realizar 10 ejercicios del capítulo 3 del libro de Boyd (funciones convexas).
Semana 15. Realizar 10 ejercicios del capítulo 9 del libro de Boyd (Minimización sin restricciones).
Recursos
Software
Sitio Web
Akili link
Videos
El ingenioso ingenio de la calculadora Video
Complemento a 9 Video
Computadora de canicas Video
Computadoras de bombillas Video
Futuro de las Computadoras Video
Computadoras Analógicas Video
Conversor a puntos flotantes sitio
Algoritmo rápido de la raíz cuadrada video
El Universo es hostil con las computadoras Video
El algoritmo más importante 1 Video
El algoritmo más importante 2 Video
Sobre la TRF Video
Sobre autotune Video