Reto de métodos numéricos: resumen
Durante octubre (2017) escribí un programa por día para algunos métodos numéricos famosos en Python y Julia. Esto está pensado como un ejercicio, no esperen que el código sea lo suficientemente bueno para usarse en la "vida real". Además, también debo mencionar que casi que no tenía experiencia con Julia, así que probablemente no escriba un Julia idiomático y se parezca más a Python.
Resumen
Esta publicación resume el reto. Para ver el código fuente pueden remitirse al repositorio.
El veredicto
Ya que el reto es conmigo mismo, y el propósito era aprender algo de Julia, el veredicto es: exitoso. Sin embargo, fallé en el día 26 con el Método de Elementos de Frontera.
La lista de métodos
Día |
Método numérico |
---|---|
Bisección |
|
Regula falsi |
|
Newton |
|
Newton multivariable |
|
Broyden |
|
Descenso del gradiente |
|
Nelder-Mead |
|
Newton para optimización |
|
Interpolación de Lagrange |
|
Interpolación de Lagrange con muestreo de Lobatto |
|
Interpolación de Lagrange con matriz de Vandermonde |
|
Interpolación de Hermite |
|
Interpolación spline |
|
Cuadratura trapezoidal |
|
Cuadratura de Simpson |
|
Cuadratura de Clenshaw-Curtis |
|
Integración de Euler |
|
Integración de Runge-Kutta |
|
Integración de Verlet |
|
Método del disparo |
|
Diferencias finitas con método de Jacobi |
|
Diferencias finitas para valores propios |
|
Método de Ritz |
|
Elementos finitos en 1D |
|
Elementos finitos en 2D |
|
Método de elementos de frontera |
|
Integración Monte-Carlo |
|
Factorización LU factorization |
|
Factorización de Cholesky |
|
Gradiente conjugado |
|
Elementos finitos con solucionador |
Conclusiones
Este era un ejercicio de kata de código para aprender algunos detalles sobre Julia para computación científica. Como tal, fue muy útil para mí ensuciarme las manos con Julia.
Implementar el Método de Elementos de Frontera en un día parece algo difícil. Yo ya lo sabía de antemano, pero lo intenté de todas formas … sin éxito.
La sintaxis de Julia está en un punto intermedio entre Python y Matlab. Esto hace que sea fácil de usar, aunque la documentación de algunas paquetes está en una etapa preliminar en este momento.
No volveré a hacer un reto como estos en un rato. Requiere de mucha atención realizarlo.