Numerical methods challenge: Summary
During October (2017) I wrote a program per day for some wellknown numerical methods in both Python and Julia. It was intended to be an exercise, then don't expect the code to be good enough for real use. Also, I should mention that I had almost no experience with Julia, so it probably is not idiomatic Julia but more Pythonlike Julia.
Summary
This post is a summary of that challenge. For the source code you can check the repository.
The verdict
Since the challenge is with myself, and the main purpose was to learn some Julia the verdict is: success. Nevertheless, I failed during day 26 with the Boundary Element Method.
The list of methods
Day 
Numerical method 

Bisection 

Regula falsi 

Newton 

Newton multivariate 

Broyden 

Gradient descent 

NelderMead 

Newton for optimization 

Lagrange interpolation 

Lagrange interpolation with Lobatto sampling 

Lagrange interpolation using Vandermonde matrix 

Hermite interpolation 

Spline interpolation 

Trapezoid quadrature 

Simpson quadrature 

ClenshawCurtis quadrature 

Euler integration 

RungeKutta integration 

Verlet integration 

Shooting method 

Finite differences with Jacobi method 

Finite differences for eigenvalues 

Ritz method 

Finite element method in 1D 

Finite element method in 2D 

Boundary element method 

MonteCarlo integration 

LU factorization 

Cholesky factorization 

Conjugate gradient 

Finite element method with solver 
Conclusions
This was an exercise of codekata to learn some of the details of Julia for scientific computing. As such, it was really useful for me to get my hands dirty with Julia.
Implementing the Boundary Element Method in one day seems to be rough. I knew this beforehand, but I gave it a try anyways … without succcess.
Julia syntax is somewhat in a sweetspot between Python and MATLAB. This makes it really easy to use, although the documentation of some packages is at an arcane stage right now.
I won't take a challenge like this in a while. It takes a lot of atttention to get it done.
Comments
Comments powered by Disqus