2025-09-11 16:38:17 +03:00
2025-09-11 16:36:19 +03:00
2025-09-11 16:37:41 +03:00
2025-09-11 16:37:41 +03:00

numethods

A small, from-scratch, object-oriented Python package implementing classic numerical methods.
No NumPy / SciPy solvers used — algorithms are implemented transparently for learning and research.

Features

Linear system solvers

  • LU decomposition (with partial pivoting): LUDecomposition
  • GaussJordan elimination: GaussJordan
  • Jacobi iterative method: Jacobi
  • GaussSeidel iterative method: GaussSeidel
  • Cholesky factorization (SPD): Cholesky

Root-finding

  • Bisection: Bisection
  • Fixed-Point Iteration: FixedPoint
  • Secant: Secant
  • Newtons method (for roots): NewtonRoot

Interpolation

  • Newton (divided differences): NewtonInterpolation
  • Lagrange polynomials: LagrangeInterpolation

Orthogonalization, QR, and Least Squares (NEW)

  • Classical GramSchmidt: QRGramSchmidt
  • Modified GramSchmidt: QRModifiedGramSchmidt
  • Householder QR (numerically stable): QRHouseholder
  • QR-based linear solver (square systems): QRSolver
  • Least Squares for overdetermined systems (via QR): LeastSquaresSolver

Matrix & Vector utilities

  • Minimal Matrix / Vector classes
  • @ operator for matrix multiplication (NEW)
  • * for scalarmatrix multiplication
  • .T for transpose
  • Forward / backward substitution helpers

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|).
Description
A lightweight, from-scratch, object-oriented Python package implementing classic numerical methods.
Readme MIT 508 KiB
Languages
Jupyter Notebook 80.4%
Python 19.6%