forked from denizdonmez/numethods
3.7 KiB
3.7 KiB
numethods
A lightweight, from-scratch, object-oriented Python package implementing classic numerical methods.
No NumPy / SciPy solvers used, algorithms are implemented transparently for learning and research.
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() etc).
Tutorial Series
This package comes with a set of Jupyter notebooks designed as a structured tutorial series in numerical methods, both mathematically rigorous and hands-on with code.
Core Tutorials
-
Tutorial 1: Vectors and Matrices
- Definitions of vectors and matrices.
- Vector operations: addition, scalar multiplication, dot product, norms.
- Matrix operations: addition, multiplication, transpose, inverse.
- Matrix and vector norms.
- Examples with
numethods.linalg
.
-
Tutorial 2: Linear Systems of Equations
- Gaussian elimination and Gauss–Jordan.
- LU decomposition.
- Cholesky decomposition.
- Iterative methods: Jacobi and Gauss-Seidel.
- Examples with
numethods.solvers
.
-
Tutorial 3: Orthogonalization and QR Factorization
- Inner products and orthogonality.
- Gram–Schmidt process (classical and modified).
- Householder reflections.
- QR decomposition and applications.
- Examples with
numethods.orthogonal
.
-
Tutorial 4: Root-Finding Methods
- Bisection method.
- Fixed-point iteration.
- Newton’s method.
- Secant method.
- Convergence analysis and error behavior.
- Trace outputs for iteration history.
- Examples with
numethods.roots
.
Features
Linear system solvers
- LU decomposition (with partial pivoting):
LUDecomposition
- Gauss-Jordan elimination:
GaussJordan
- Jacobi iterative method:
Jacobi
- Gauss-Seidel iterative method:
GaussSeidel
- Cholesky factorization (SPD):
Cholesky
Root-finding
- Bisection:
Bisection
- Fixed-Point Iteration:
FixedPoint
- Secant:
Secant
- Newton's method (for roots):
NewtonRoot
Interpolation
- Newton (divided differences):
NewtonInterpolation
- Lagrange polynomials:
LagrangeInterpolation
Orthogonalization, QR, and Least Squares
- Classical Gram-Schmidt:
QRGramSchmidt
- Modified Gram-Schmidt:
QRModifiedGramSchmidt
- Householder QR (numerically stable):
QRHouseholder
- QR-based linear solver (square systems):
QRSolver
- Least Squares for overdetermined systems (via QR):
LeastSquaresSolver
Numerical Differentiation
- Forward difference:
ForwardDiff
- Backward difference:
BackwardDiff
- Central difference (2nd order):
CentralDiff
- Central difference (4th order):
CentralDiff4th
- Second derivative:
SecondDerivative
- Richardson extrapolation:
RichardsonExtrap
Matrix & Vector utilities
- Minimal
Matrix
/Vector
classes @
operator for matrix multiplication*
for scalar-matrix multiplication.T
for transpose- Forward / backward substitution helpers
- Norms, dot products, row/column access
Install (editable)
pip install -e /numethods
or just add /numethods
to PYTHONPATH
.
Examples
python /numethods/examples/demo.py
Notes
- All algorithms are implemented without relying on external linear algebra solvers.
- Uses plain Python floats and list-of-lists for matrices/vectors.
- Tolerances use a relative criterion
|Δ| ≤ tol (1 + |value|)
.