Metadata-Version: 2.4
Name: nbmath
Version: 1.2.2
Summary: python零依赖数学库
Author-email: tc0512 <tancheng_0812@qq.com>
License: MIT
Project-URL: Homepage, https://github.com/tc0512/nbmath
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# nbmath

一个实用的数学工具包，支持方程求解、几何计算、统计分析等功能。

## 安装
```bash
pip install https://ghproxy.net/https://github.com/tc0512/nbmath/releases/download/v1.2.0/nbmath-1.2.0-py3-none-any.whl
```

## 快速开始
```python
from nbmath.equation import solve
from nbmath.const import pi
from nbmath.optimize import newton
from nbmath.utils import is_odd, zeros
import os

#解方程
print(solve(1, -3, 2)) #x1=2,x2=1

#调用常数
print(pi()) #3.141592653589793

#最小值
TOL = 1e-6
MAX_ITER = 100
print(newton(lambda x: x**2+6*x+9, 1.5, TOL, MAX_ITER)) #x接近-3,y接近0(有浮点误差)

#绘制康托尔阶梯
os.system("python -m nbmath.plots.examples.cantor_stair")

#判断是否为奇数
print(is_odd(99999)) #True

#生成10×10的全零矩阵
print(zeros(10, 10))
```

## 模块介绍
### 常数模块`nbmath.const`
- `pi` `tau` `e` - 数学常数
- `G` `g` `k` `NA` - 物理常数
### 方程模块`nbmath.solve`
- 一元一次/二次/三次/四次方程求解
- 牛顿迭代法解高次方程
- 不等式
- 高斯消元解线性方程组
- 统一接口`solve`
### 几何模块`nbmath.geo`
- 点`Point`
- 线段`Line`
- 圆`Circle`
- 多边形`Polygon`
### 统计模块`nbmath.stats`
- `mean`平均数 `percentile`百分位数
- `mode`众数 `var`方差 `std`标准差
### 工具模块`nbmath.utils`
- `gcd`最大公约数 `lcm`最小公倍数
- `floor`向下取整 `trunc`截断取整
- `fac`阶乘 `diff`多项式求导
- `np.linspace`纯python实现
- `polyval`多项式代入求值
- `timer`计时器
- `is_even` `is_odd`奇偶数判断
- `eye`单位矩阵 `ones` `zeros`全一/全零矩阵
### 优化算法模块`nbmath.optimize`
- `brute`咆哮算法
- `golden_section`黄金分割法
- `newton`牛顿法
- `gradient_descent`梯度下降
- `simulated_annealing`模拟退火
### 绘图模块`nbmath.plots`
- `point`描点 `scatter`散点图
- `line`线段 `fun`绘制函数F(x)
- `rect`矩形
- `mandelbrot` `heart`等共6个示例图案

## 示例代码
```python
from nbmath.equation import solve
from nbmath.stats import mode
from nbmath.optimize import simulated_annealing
from nbmath import plots as plt
import math
import os

#求解x^4-10x^2+9=0
roots = solve(1, 0, -10, 0, 9)
print(roots) #接近±1,±3，浮点误差可能存在，请以实际使用为准
print(solve(2, 3, ">")) #x>-1.5

data = [1, 1, 2, 3, 4]
print(mode(data)) #[1]

#求y=x^4-5x^2+4的最小值
def F(x):return x**4-5*x**2+4
TEMP = 100
COOLING = 0.95
STEPS = 1000
TOL = 1e-6
print(simulated_annealing(F, -5, 5, TEMP, COOLING, STEPS, TOL)) #理论值x=±√10/2,f(x)_min=2.25,实际使用中可能存在微小误差,请以实际情况为准

#绘制y=cos(x)
plt.window(800, 600)
plt.setax(-2*math.pi, -1.5*math.pi, 2*math.pi, 1.5*math.pi)
plt.drawaxhline()
plt.fun(lambda x: math.sin(x), -2*math.pi, 2*math.pi, "red", 2, 800)
plt.rect(1, 1, 1.5, 0.5, "red") #绘制一个左下角(1,1),长1.5,宽0.5的红色矩形
plt.keep_window()

#绘制威尔斯特拉斯函数
os.system("python -m nbmath.plots.examples.weierstrass")
```

## 许可证
MIT
