Profesor | Ricardo Atahualpa Solórzano Kraemer | ma | 13 a 16 | Taller de Control y Electrónica |
Ayudante | Alan Rodrigo Mendoza Sosa |
Horario: Martes 1-4pm
googleclassroom:1lqk8ab
Es requisito haber llevado física computacional. Es altamente recomendable saber programar en Julia.
Introducción:
Al hacer simulaciones de problemas físicos, seguido nos topamos con problemas de geometría, como es el cálculo de áreas, encontrar el vecino más cercano a una determinada partícula, el tamaño de un cluster de moléculas, la forma del volumen libre de cada partícula en un fluido determinado, etc. Incluso en trabajos experimentales nos enfrentamos frecuentemente a problemas de geometría computacional. Por ejemplo, determinar la región en la que se mueve una partícula (bacteria, animal, partícula browniana) cuando se tienen una serie de puntos donde la partícula ha estado, al ajustar una curva a una serie de puntos o bien al dividir datos en regiones, en las cuales se cumplen determinados aspectos.
Hacer estos cálculos no siempre resulta sencillo y cuando es así, la eficiencia computacional es frecuentemente muy mala, por lo que resulta finalmente inviables para sistemas medianamente grandes.
Por ejemplo, consideremos el siguiente problema. Dado un conjunto de N puntos, calcular la distancia entre los 2 más cercanos. Una forma de resolver este problema es calcular la distancia entre todos los pares de puntos y obtener el mínimo entre estos. El número de cálculos que se tienen que hacer es del orden de N^2 , lo cual implica que el método fallará muy pronto para valores de N grandes. .
Uno de los objetivos de la geometría computacional es mejorar notoriamente la eficiencia de algoritmos computacionales en general, mediante el uso de técnicas desarrolladas en geometría.
Pensando en este objetivo, este curso cubrirá el siguiente temario.
Temario:
Introducción
Algunos problemas y aplicaciones interesantes de la geometría computacional.
Eficiencia y complejidad computacional
Estructura de datos (árbol, lista doblemente conectada, etc)
Repaso de Julia (1° tarea)
Operaciones básicas, vectores, matrices, gráficas, etc.
Traslaciones, rotaciones, proyecciones, SVD
Formas (2° Tarea)
Envolvente convexa
Polígonos de Voronoi
Triangulaciones
Medidas (3° Tarea)
Cálculo de áreas
Cálculo de volúmenes e hipervolúmenes
Distancias mínimas y distancias máximas
Lineas, planos, espacios.. (4° Tarea)
Intersecciones
Programación lineal
Aprendizaje asistido (Machine learning)
Arreglos (5° Tarea)
Camino mínimo entre 2 puntos en un medio con obstáculos
Gas de Lorentz
Proyecto final (Asesorías para lograr su proyecto final)
Pedagogía
El curso tendrá 2 variantes de clase, la de asesoría, donde se trabajará en resolver ejercicios (las tareas) mediante la ayuda del profesor, y la de presentación, donde el profesor expondrá la teoría detrás de los algoritmos que se plantearán.
Evaluación
La evaluación se hará mediante 5 tareas y un proyecto final. Las tareas contarán el 60% del curso, mientras que el proyecto final contará el 40%. Sobre las tareas será sólo necesario entregar un notebook, mientras que para el proyecto final será necesario hacer una exposición.