Basado en la metodología de Nicholas J. Giordano
Este repositorio reúne ejercicios y proyectos de Física Computacional. La ruta recomendada va desde la programación básica, pasa por los métodos numéricos y la mecánica clásica, y termina en modelos aplicados de decaimiento y viento.
- Primeros programas: comienza en
firts_course/module_one, con un programa introductorio en C++. - Métodos numéricos: continúa con
module_two/example_1para calcular velocidades y aceleraciones mediante diferencias finitas, y conmodule_two/example_2para procesar datos y generar gráficas con Gnuplot. - Mecánica y sistemas dinámicos: estudia los modelos de bicicleta con y sin resistencia del aire en
module_three/noairvsairy el oscilador de Duffing enmodule_three/nonlinear. - Modelos de decaimiento: revisa
decay, que reúne una misma estructura exponencial aplicada a fenómenos físicos, ambientales y económicos. - Aerodinámica y viento: termina con
waves, donde se modelan las fuerzas sobre una cometa, la catenaria del hilo y la reconstrucción de un perfil vertical de viento.
| Proyecto | Qué contiene | Tecnologías |
|---|---|---|
module_one |
Programa inicial y estructura básica de compilación | C++, Make |
example_1 |
Derivadas numéricas de posición para obtener velocidad y aceleración | Python, C++ |
example_2 |
Procesamiento de datos experimentales y generación de gráficas | C++, Gnuplot |
noairvsair |
Comparación del movimiento de una bicicleta con y sin resistencia del aire | C++ |
nonlinear |
Simulación del oscilador no lineal de Duffing | C++ |
El README de decay es el punto de entrada de esta familia de proyectos. Todos parten de la idea de que una magnitud cambia proporcionalmente a su estado actual, pero cada carpeta cambia la interpretación física o aplicada de esa magnitud. Son modelos educativos independientes; no forman una sola aplicación ni se importan entre sí.
| Proyecto | Problema estudiado | Implementación | Documentación |
|---|---|---|---|
radioactive |
Desintegración nuclear y vida media | radiactive.py, True BASIC |
Readme.md |
credit_risk |
Supervivencia de un crédito y riesgo de default | risk.py |
Readme.md |
loss_value |
Pérdida de valor de una inversión en Argentina | loss_argentina.py |
Readme.md |
water resources |
Disponibilidad hídrica en el páramo de Santurbán | resources_santurban.py |
Readme.md |
mining |
Ajuste de datos hipotéticos sobre recursos hídricos afectados por minería | mining.py |
Readme.md |
plastic_decomposition |
Persistencia y descomposición de plásticos en Bogotá | plastic_decomposition.py |
Readme.md |
Los scripts de Python requieren numpy y matplotlib; mining.py también requiere scipy. Sus datos son hipotéticos o simplificados y los gráficos tienen finalidad didáctica, no predictiva.
| Proyecto | Qué contiene |
|---|---|
modelo_cometa_catenaria.py |
Equilibrio aerodinámico de la cometa y forma de la cuerda como catenaria |
perfil_viento_cometa.py |
Estimación de velocidad del viento y ajuste de un perfil vertical |
README_perfil_viento.md |
Explicación de la extensión de la cometa como anemómetro |
Los proyectos no forman una única aplicación ni dependen unos de otros mediante imports. La relación es progresiva y conceptual:
module_oneintroduce la programación.module_twoconvierte datos en magnitudes físicas mediante derivación numérica.module_threeaplica esas herramientas a sistemas mecánicos y no lineales.decaymuestra cómo una misma ecuación puede transferirse entre dominios.wavesintegra equilibrio de fuerzas, geometría, simulación iterativa y ajuste de datos.
El repositorio mezcla C++, Python, True BASIC y Gnuplot porque conserva ejercicios con distintos objetivos didácticos. Los README de cada carpeta explican los requisitos y la ejecución particular de cada proyecto.
Este curso introduce técnicas computacionales y métodos numéricos para resolver diversos problemas de física que van más allá de los enfoques analíticos. El programa utiliza el marco pedagógico de Nicholas J. Giordano y se enfoca en cómo la computación puede ampliar y profundizar la comprensión de los fenómenos físicos mediante la simulación y el análisis1.
Al finalizar el curso, los estudiantes podrán:
- Comprender el papel de la computación en la física moderna.
- Traducir problemas físicos a algoritmos.
- Aplicar métodos numéricos estándar, como búsqueda de raíces, integración, diferenciación, ecuaciones diferenciales y métodos de Monte Carlo, para resolver sistemas físicos.
- Visualizar e interpretar resultados computacionales.
- Desarrollar competencias en programación científica y pensamiento computacional2.
| Módulo | Temas y habilidades |
|---|---|
| Introducción y programación | Fundamentos del pensamiento computacional aplicado a la física. Introducción a lenguajes de programación, principalmente Python o MATLAB. Algoritmos y visualización de datos. |
| Métodos numéricos | Búsqueda de raíces (bisección y Newton-Raphson), interpolación (polinomios y Lagrange), mínimos cuadrados y ajuste de datos, integración numérica (reglas trapezoidal y de Simpson), y ecuaciones diferenciales ordinarias (Euler y Runge-Kutta). |
| Mecánica clásica | Aplicaciones al movimiento de proyectiles, sistemas oscilatorios, movimiento planetario, caos y sistemas dinámicos. Simulación de sistemas newtonianos y no lineales34. |
| Procesos aleatorios | Simulaciones de Monte Carlo, caminatas aleatorias, difusión, decaimiento nuclear y fundamentos de mecánica estadística. |
| Electromagnetismo y física cuántica | Simulación de electrostática, campos y sistemas cuánticos básicos, incluidas las ecuaciones de Schrödinger dependientes e independientes del tiempo. |
| Temas avanzados | Transformadas de Fourier, ecuaciones diferenciales parciales y sistemas complejos, como el modelo de Ising, autómatas celulares y transiciones de fase1. |
- Clases interactivas sobre conceptos físicos y numéricos.
- Laboratorios prácticos de programación y ejercicios de código.
- Proyectos guiados que reproducen simulaciones del libro y exploran nuevos escenarios.
- Visualización de resultados para desarrollar intuición sobre las soluciones numéricas2.
- Series de problemas y ejercicios de programación.
- Examen parcial sobre teoría e implementación.
- Proyecto de formulación, programación y documentación de una solución computacional para un problema físico relevante.
- Computational Physics (2.ª edición), Nicholas J. Giordano y Hisao Nakanishi1
- Simulación de sistemas clásicos y cuánticos que no pueden resolverse analíticamente.
- Visualización del comportamiento de sistemas complejos.
- Física estadística y estocástica.
- Investigaciones basadas en proyectos sobre temas de investigación actuales.
- Física introductoria.
- Cálculo diferencial e integral, de una y varias variables.
- Programación básica. No es obligatoria, pero resulta útil; el curso puede incluir una introducción rápida a los fundamentos de programación2.
Este curso utiliza la computación para hacer tangibles los conceptos físicos y preparar a los estudiantes para estudios avanzados, investigación y carreras profesionales en física y disciplinas relacionadas12.
Footnotes
-
https://www.mathworks.com/academia/books/computational-physics-giordano.html ↩ ↩2 ↩3 ↩4
-
https://class-descriptions.northwestern.edu/4930/WCAS/PHYSICS/28874 ↩ ↩2 ↩3 ↩4
-
https://nust.edu.pk/wp-content/uploads/course_content_files/340753870_PHY-930%20%20%20Computational%20Physics%20.pdf ↩
-
https://www.ndsu.edu/fileadmin/physics.ndsu.edu/PDF_FILES/Detailed_Course_Descriptions/Phys370.pdf ↩