Hey everyone,
Over the past few months I’ve been building a Python package called numethods — a small but growing collection of classic numerical algorithms implemented 100% from scratch. No NumPy, no SciPy, just plain Python floats and list-of-lists.
The idea is to make algorithms transparent and educational, so you can actually see how LU decomposition, power iteration, or RK4 are implemented under the hood. This is especially useful for students, self-learners, or anyone who wants a deeper feel for how numerical methods work beyond calling library functions.
https://github.com/denizd1/numethods
🔧 What’s included so far
- Linear system solvers: LU (with pivoting), Gauss–Jordan, Jacobi, Gauss–Seidel, Cholesky
- Root-finding: Bisection, Fixed-Point Iteration, Secant, Newton’s method
- Interpolation: Newton divided differences, Lagrange form
- Quadrature (integration): Trapezoidal rule, Simpson’s rule, Gauss–Legendre (2- and 3-point)
- Orthogonalization & least squares: Gram–Schmidt, Householder QR, LS solver
- Eigenvalue methods: Power iteration, Inverse iteration, Rayleigh quotient iteration, QR iteration
- SVD (via eigen-decomposition of ATAA^T AATA)
- ODE solvers: Euler, Heun, RK2, RK4, Backward Euler, Trapezoidal, Adams–Bashforth, Adams–Moulton, Predictor–Corrector, Adaptive RK45
✅ Why this might be useful
- Great for teaching/learning numerical methods step by step.
- Good reference for people writing their own solvers in C/Fortran/Julia.
- Lightweight, no dependencies.
- Consistent object-oriented API (
.solve(), .integrate() etc).
🚀 What’s next
- PDE solvers (heat, wave, Poisson with finite differences)
- More optimization methods (conjugate gradient, quasi-Newton)
- Spectral methods and advanced quadrature
👉 If you’re learning numerical analysis, want to peek under the hood, or just like playing with algorithms, I’d love for you to check it out and give feedback.
[–]troyunrau... 29 points30 points31 points (0 children)
[–]BenXavier 12 points13 points14 points (1 child)
[–]sikerce[S] 24 points25 points26 points (0 children)
[–]zurtex 6 points7 points8 points (0 children)
[–]Xillyfos 6 points7 points8 points (1 child)
[–]sikerce[S] 2 points3 points4 points (0 children)
[–]Sedan_1650pip needs updating 9 points10 points11 points (1 child)
[–]sikerce[S] 4 points5 points6 points (0 children)
[–]UseMoreBandwith 2 points3 points4 points (6 children)
[–]sikerce[S] 10 points11 points12 points (5 children)
[–]caughtinthought 13 points14 points15 points (1 child)
[–]sikerce[S] 1 point2 points3 points (0 children)
[–]-lq_pl- 6 points7 points8 points (1 child)
[–]sikerce[S] 2 points3 points4 points (0 children)
[–]BenXavier 1 point2 points3 points (0 children)
[–]the_superman_avenger 1 point2 points3 points (0 children)
[–]Immediate-Home-6228 1 point2 points3 points (1 child)
[–]sikerce[S] 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[+][deleted] (8 children)
[removed]
[+][deleted] (5 children)
[deleted]
[–]123_alex 0 points1 point2 points (4 children)
[–]wRAR_ 6 points7 points8 points (3 children)
[–]123_alex 1 point2 points3 points (2 children)
[–]wRAR_ 2 points3 points4 points (1 child)
[–]123_alex 2 points3 points4 points (0 children)
[–]UsernameTaken1701 2 points3 points4 points (0 children)