Numerica
Numerical analysis methods implemented in Python.
Install / Use
/learn @ramesaliyev/NumericaREADME
Numerica
My own experimental implementations of numerical methods as homework.<br /> Use documentation to see how to use, and check test.py for real examples.
Table of Contents
- Usage
- Documentation
- 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/*
