numerica
numerica copied to clipboard
Numerical analysis methods implemented in Python.
Numerica
My own experimental implementations of numerical methods as homework.
Use documentation to see how to use, and check test.py for real examples.
Table of Contents
-
Usage
- Importing
- Function Definition
- Matrix Definition
-
Documentation
-
1- Solving Nonlinear Equations
-
Root Bracketing Methods
- Graph
- Bisection
- Regula-Falsi
-
Iterative Methods
- Fixed-Point Iteration
- Newton-Raphson
- Secant
-
Root Bracketing Methods
-
2- Matrix Operations
-
Basic Operations
- Definition
- Creating an Identity Matrix by n
- Getting Dimensions of a Matrix
- Transpose of a Matrix
-
Finding Inverse of a Matrix
- Gauss-Jordan Method
-
Matrix Utils
- Concat Matrices by Row (Horizontal)
- Concat Matrices by Column (Vertical)
- Map a Row of Matrix
- Map all Matrix Cells
- Is Matrix Check
- Slice Matrix Vertically
-
Basic Operations
-
3- Solving Systems of Linear Equations
- Gauss Elimination
- Jacobi
- Gauss-Seidel
- 4- Solving Systems of Nonlinear Equations
-
5- Numerical Integration
- Trapezoidal
- Simpson
-
6- Numerical Differentiation
-
Euler Methods
- Backward
- Forward
- Midpoint
-
Euler Methods
-
7- Finite Differences
- Determine Degree of a Polynomial
-
8- Interpolation
- Lagrange
-
9- Regression
- Least Squares
-
1- Solving Nonlinear Equations
- Resources
- Testing Package
- Uploading to PyPI
Usage
python >= 3.8 is required
Importing
import numerica as n
from numerica import f // function definition
from numerica import m // matrix definition
Function Definition
f('expression')
fx = f('3x^2 + 2x + 3')
fx(2)
Matrix Definition
m(
a11, a12, a13;
a21, a22, a23;
a31, a32, a33
)
matrix = m('1,2,3; 4,5,6; 7,8,9');
Documentation
1- Solving Nonlinear Equations
Root Bracketing Methods
Graph
n.nl_graph(fx, dx, epsilon, x)
Bisection
n.nl_bisection(fx, epsilon, a, b)
Regula-Falsi
n.nl_regulafalsi(fx, epsilon, a, b)
Iterative Methods
Fixed-Point Iteration
n.nl_fixedpoint(hx, epsilon, x)
Newton-Raphson
n.nl_newtonraphson(fx, epsilon, x)
Secant
n.nl_secant(fx, epsilon, x0, x1)
2- Matrix Operations
Basic Operations
Matrix Definition
m(
a11, a12, a13;
a21, a22, a23;
a31, a32, a33
)
Identity Matrix
n.m_id(n)
Size of Matrix
(m, n) = n.m_size(A)
Transpose of a Matrix
n.m_transpose(A)
Finding Inverse of a Matrix
Gauss-Jordan Method
n.mi_gaussjordan(A)
Matrix Utils
Concat Matrices by Row (Horizontal)
n.m_rowconcat(A, B)
Concat Matrices by Column (Vertical)
n.m_colconcat(A, B)
Map a Row of Matrix
n.m_rowmap(A, i, iteratee)
Map all Matrix Cells
n.m_cellmap(A, iteratee)
Is Matrix Check
n.is_matrix(A)
Slice Matrix Vertically
n.m_rowslice(A, start, stop, step)
3- Solving Systems of Linear Equations
Gauss Elimination
n.ls_gauss(A, C)
Jacobi
n.ls_jacobi(A, C, X, epsilon=0.001)
Gauss-Seidel
n.ls_gaussseidel(A, C, X, epsilon=0.001)
4- Solving Systems of Nonlinear Equations
5- Numerical Integration
Trapezoidal
n.itg_trapezoidal(fx, x0, xn, n)
Simpson
n.itg_simpson(fx, x0, xn, n)
6- Numerical Differentiation
Euler Methods
Backward
n.diff_backward(fx, x)
Forward
n.diff_forward(fx, x)
Midpoint
n.diff_midpoint(fx, x)
7- Finite Differences
Determine Degree of a Polynomial
n.fd_degree(pair_tuples)
n.fd_degree([(x0,y0), (x1,y1), (x2,y3), ...])
8- Interpolation
Lagrange
n.itp_lagrange(pair_tuples)
n.itp_lagrange([(x0,y0), (x1,y1), (x2,y3), ...], x)
9- Regression
Least Squares
n.reg_leastsquares(pair_tuples, degree) // returns polynomial
n.reg_leastsquares_solve(pair_tuples, x, degree) // solves polynomial
n.reg_leastsquares_solve([(x0,y0), (x1,y1), (x2,y3), ...], x, deg)
Resources
- YTU Numerical Analysis Lecture Notes
- https://mat.iitm.ac.in/home/sryedida/public_html/caimna/index1.html
Testing Package
Test Directly as Script
python3.8 -m numerica
or Install Package Locally (from repo root dir)
pip3.8 install .
and Test It from REPL
import numerica as n
# ...
or Use test.py Interactively
python3.8 -i test.py
# ...
or Just Test and Exit
python3.8 test.py
Uploading to PyPI
Install Twine
pip3.8 install twine
Build
rm -rf build & rm -rf dist & rm -rf numerica.egg-info
python3.8 setup.py sdist bdist_wheel
Upload
twine upload dist/*