Encabezado Facultad de Ciencias
Presentación

Física (plan 2002) 2021-1

Séptimo Semestre, Física Computacional

Grupo 8423, 60 lugares. 52 alumnos.
Profesor Aldo Sayeg Pasos Trejo lu mi 15 a 18
Ayudante David Leonardo Galicia Praskauer
Ayudante Crhistian Alejandro Benítez Abarca
 

Introducción

El curso de “Física Computacional” tiene un estatus ambiguo. Aunque en principio es un curso diseñado para abarcar todos los métodos numéricos que un esudiante de física podría necesitar para atacar problemas interesantes, en la mayoría de los casos los estudiantes no tienen conocimiento alguno de la programación o del cómputo científico, por lo que es necesario introducirlos desde cero a la programación y eso termina abarcando una gran parte del curso.


Durante este curso evaluaremos los conocimientos previos de los alumnos e intaremos que todos tengan los conocimientos necesarios de programación lo más pronto posible para poder cubrir todo el temario. Debido a que la computadora será nuestra herramienta fundamental, el estar familiarizado con el uso básico de la computadora ayudará al alumno durante el curso. Todo el curso será impartido de manera remota.

Aunque dedicaremos el primer bloque de temas del curso a una breve introducción a la programación y la computación, es preferible que los alumnos cuenten con nociones básicas de programación en cualquier lenguaje (preferentemente en Julia). Si se desea aprender preliminarmente, pueden consultar la referencias [7,8].

Más aún, los alumnos deben de tener claras las nociones teóricas de los temas matemáticos que se verán: cálculo diferencial e integral, álgebra lineal, ecuaciones diferenciales ordinarias y ecuaciones diferenciales parciales. Para los alumnos que aún no conozcan el tema de ecuaciones diferenciales parciales, pueden consultar las referencias [19,20,21].

Temario

  1. Introducción a la programación y a las ciencias de la computación (12 horas)

    1. Composición de una computadora y representación de la información.

    2. Programación básica con estructuras de control y ciclos.

    3. Graficación y cómputo científico.

    4. Introducción a los algoritmos y complejidad computacional.

  2. Introducción al análisis numérico (15 horas)

    1. Diferenciación numérica.

    2. Ecuaciones trascendentales.

    3. Optimización.

    4. Interpolación

    5. Integración numérica.

  3. Álgebra Lineal Numérica (9 horas)

    1. El problema Ax = b y sus equivalencias.

    2. Eliminación Gaussiana y Descomposición LU.

    3. Métodos iterativos.

    4. Introducción a los métodos para valores y vectores propios.

  4. Ecuaciones diferenciales ordinarias (18 horas)

    1. Método de Euler.

    2. Métodos de Runge-Kutta y otros métodos explícitos.

    3. Métodos implícitos.

    4. Aplicaciones en mecánica clásica.

    5. Problemas de valores a la frontera.

    6. Aplicaciones en mecánica cuántica.

    7. Método de Verlet y otros métodos simplécticos.

  5. Ecuaciones diferenciales parciales (18 horas)

    1. Ecuación de difusión.

    2. Ecuación de Poisson.

    3. Ecuación de onda.

    4. Aplicaciones en electrostática y acústica.

  6. Introducción a los métodos de Monte Carlo (12 horas)

    1. Introducción a la Probabilidad.

    2. Generación de números aleatorios.

    3. Integración de Monte Carlo.

    4. Caminatas aleatorias.

    5. Movimiento Browniano y ecuación de Langevin.

Evaluación y Modalidad

Los porcentajes de evaluación del curso serán los siguientes:

  • 80 % Tareas

  • 20 % Proyecto final

El curso se impartirá de manera remota. Cada semana habrá máximo 2 clases que consistirán en un video pregrabado, de duración entre 1 y 2 horas, y una lista pequeña de ejercicios correspondientes a los temas del video. Adicional a esto, habrá una videollamada semanales para preguntar y resolver dudas. Se entregarán aproximadamente 8 o 9 tareas, las cuales consistirán en una selección arbitraria de los ejercicios de los videos.

La respuesta a la gran mayoría de los ejercicios debe de entregarse como un programa a ejecutarse. Toda la parte de programación del curso será enseñada en el lenguaje Julia por ser el lenguaje de alto nivel con mayor velocidad. Sin embargo, los alumnos no están obligados a utilizar este lenguaje y pueden escoger de entre los siguientes también: Python, Matlab, C y Fortran. De escogerse trabajar con otro lenguaje de programación diferente a Julia, el alumno sera totalmente responsable de encontrar equivalencias de las herramientas de Julia utilizadas para su propio lenguaje.

Usaremos Julia dentro del editor web Jupyter Lab. Para revisar como hacer una instalación del intérprete de Julia y de dicho programa, pueden revisar este video

A excepción de las primeras clases, en las que pondré código explícitamente para enseñarles lo más básico de la programación e introducirlos al tema, en la mayoría no programaré nada mi mostraré código para realizar los ejercicios. La dinámica del curso consiste en que ustedes sean los que programen todo el código necesario y el profesor y los ayudantes estemos ahí para asistirlos y corregirlos.


El acceso al material de las clases, los anuncios de la clase y la entrega de las tareas se hará mediante un blog en la plataforma Google Classroom, por lo que es indispensable que el alumno cuente con un correo manejado por Google (@gmail.com,@ciencias.unam.mx,etc) . Es responsabilidad del alumno conseguir acceso al blog y estar al pendiente de las asignaciones. También se creará una sala de chat en la plataforma Slack para estar en constante comunicación.

Aunque la asistencia a las videollamadas no es obligatoria, la participación y el involucramiento de los alumnos es muy importante para lograr comprender a fondo todo el contenido del curso, en particular por el caracter autodidacta que habrá. Se le invita a los alumnos a expresar todas sus dudas tanto en las videollamadas como por correo o por chat. La participación del alumno se tomará en cuenta para realizar cualquier ajuste en su calificación final, así como para consideracionees en extensiones de fechas de entrega.

Bibliografía

Básica

[1] B. A. Stickler y E. Schachinger, Basic concepts in computational physics, 2.a ed. Springer, 2016.
[2] P. O. Scherer, Computational physics: simulation of classical and quantum systems, 3.a ed. Springer, 2017.
[3] J. H. Mathews, K. D. Fink y col., Numerical methods using MATLAB. Pearson Prentice Hall Upper Saddle River, NJ, 2004, vol. 4.
[4] M. Newman, Computational Physics. CreateSpace Independent Publ. 2013.
[5] W. Gautschi, Numerical analysis, 2.a ed. Birkhauser, 2012.
[6] J. Stoer y R. Bulirsch, Introduction to numerical analysis, 3.a ed. Springer Science & Business Media, 2013, vol. 12.
[7] A. Quarteroni, R. Sacco y F. Saleri, Numerical mathematics, 1.a ed.Springer Science & Business Media, 2010, vol. 37.

Complementaria

[8] Julia Learning resources, https://julialang.org/learning/.
[9] Julia Language Documentation, https://docs.julialang.org/en/v1/.
[10] A. Downey y B. Lauwens, Think Julia: How to Think Like a Computer Scientist, https://benlauwens.github.io/ThinkJulia.jl/latest/book.html.
[11] S. Linge y H. P. Langtangen, Programming for Computations – Python. Springer, 2016.
[12] J. M. Zelle, Python programming: an Introduction to Computer Science. Franklin, Beedle & Associates, Inc., 2004.
[13] C. Hill, Learning Scientific Programming with Python, 1.a ed. USA: Cambridge University Press, 2016, isbn: 110742822X.
[14] R. J. LeVeque, Finite difference methods for ordinary and partial differential equations, 1.a ed. SIAM, 2007.
[15] R. H. Landau, M. J. Páez y C. C. Bordeianu, Computational Physics: Problem Solving with Python, 3.a ed. Wiley-VCH, 2015, isbn:3527413154.
[16] T. H. Cormen, C. E. Leiserson, R. L. Rivest y C. Stein, Introduction to Algorithms, 3.a ed. MIT press, 2009.
[17] B. A. Forouzan y F. Mosharraf, Foundations of Computer Science. Cengage Learning EMEA, 2007.
[18] S. Patel e Y. Patt, Introduction to Computing Systems: from bits & gates to C & beyond, 3.a ed. McGraw-Hill, 2019.
[19] H. F. Weinberger, A first course in partial differential equations: with complex variables and transform methods, 1.a ed. Dover, 1995.
[20] R. Haberman, Applied partial differential equations, 5.a ed. Pearson, 2013.
[21] A. Tveito y R. Winther, Introduction to partial differential equations: a computational approach. Springer Science & Business Media, 2004,vol. 29.

 


Hecho en México, todos los derechos reservados 2011-2016. Esta página puede ser reproducida con fines no lucrativos, siempre y cuando no se mutile, se cite la fuente completa y su dirección electrónica. De otra forma requiere permiso previo por escrito de la Institución.
Sitio web administrado por la Coordinación de los Servicios de Cómputo de la Facultad de Ciencias. ¿Dudas?, ¿comentarios?. Escribenos. Aviso de privacidad.