Skip to content

ramesaliyev/numerica

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Numerica

PyPI version

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

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

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/*