https://github.com/sympy/sympy
在 Python 中,有一些用于代数的第三方模块。我最喜欢的之一是 “SymPy”,它封装了大量方法来帮助数据工程师快速解决常见的数学问题。
今天我们将通过适合初学者的代码示例介绍该模块的 7 个基本用法。
1、因式分解
首先,我们需要使用 Symbol 定义一个变量,它使得变量可以应用于 sympy 的代数方法。
定义 “Symbols” 后,我们可以借助 factor() 函数轻松获取表达式的因子。
from sympy import Symbol, factor
x = Symbol('x')
y = Symbol('y')
expr = (x - 2) * (x - 2) - (y - 3) * (y - 3)
print(factor(expr))```
此外,还有另一种方便的方法可以**一次定义多个变量**。
```python
from sympy import Symbol, factor
x = Symbol('x')
y = Symbol('y')
expr = (x - 2) * (x - 2) - (y - 3) * (y - 3)
print(factor(expr))
2、扩展
另一方面,展开操作和因式分解一样简单,我们需要做的就是使用 sympy 中的 expand() 方法。
from sympy import Symbol, expand
x = Symbol("x")
y = Symbol("y")
expr = (x - y + 1)*(x + y - 5)
expr = expand(expr)
print(expr)
3、表达式求解
用纯 Python 来求解表达式是可以的,但是利用 sympy 的强大功能将使你的代码更加 Pythonic。
from sympy import Symbol
x = Symbol("x")
y = Symbol("y")
expr = x**2 - 2*x - y**3 + 7*y - 3
result = expr.subs({x: 1, y: 2})
print(result)
4、表达式计算
此外,如果你有多个表达式并想用它们进行一些计算,在 sympy 模块的帮助下,程序将像执行简单的算术计算一样简单,例如加、减、乘、除。
from sympy import Symbol
x = Symbol("x")
y = Symbol("y")
expr1 = x * y + y * y
expr2 = x * x + x * y
print(expr1 + expr2)
5、解方程
如果你手头只有一个基本计算器,那么解方程是一项挑战。
在这种情况下,使用 sympy 模块是 Python 开发人员的自然选择。
from sympy import symbols, solve
x, y = symbols('x, y')
expr = x * x - 5 * x + 6
print(solve(expr))
求解具有两个变量的方程组同样简单。
from sympy import symbols, solve
x, y = symbols('x, y')
expr1 = 3 * x + 4 * y - 34
expr2 = 2 * x + 3 * y - 56
print(solve((expr1, expr2), dict=True))
6、三角函数处理
如果你认为前面的场景并不太难,并且你也可以在没有 sympy 模块的情况下解决问题,那么三角函数计算将改变你的想法。
计算基本三角函数与求解其他表达式一样简单,因为常见的三角函数是 sympy 模块的内置函数。
from sympy import symbols, sin, N
x, y = symbols("x y")
expr = sin(x)
print(expr.subs(x, 0))
# 0
print(expr.subs(x, 3))
# sin(3)
print(N(expr.subs(x, 3)))
# 0.141120008059867
我们甚至可以简化三角表达式。
from sympy import symbols, sin, cos, tan, sec, trigsimp
x, y = symbols("x y")
print(trigsimp(sin(x) ** 2 + cos(x) ** 2))
# 1
print(trigsimp(cos(x) * tan(x)))
# sin(x)
7、绘制函数图
除了计算之外,sympy 工具甚至可以直接绘制函数图。
from sympy import Symbol
from sympy.plotting import plot
x = Symbol('x')
p1 = plot(2*x + 3)
p1.show()
来源—–程序员学长