SymPy 是一个 Python 库,专注于符号计算,提供了处理数学表达式、方程和公式的工具。与数值计算库不同,SymPy 能够进行符号微分、积分、极限等运算,适用于代数运算、微积分和方程求解等。与传统的数值计算库(如 NumPy)不同,SymPy 主要用于处理数学表达式、方程和公式的符号计算,而不是进行数值计算。
它支持多项式运算、矩阵操作、特征值计算等线性代数功能,并能处理数论和组合数学中的问题。SymPy 还具备简化数学表达式的功能,并能绘制数学函数和图形。作为一个完全用 Python 实现的开源库,SymPy 易于集成到 Python 环境中,广泛应用于学术研究、教育以及需要符号计算的领域。
什么是 SymPy?
它是计算机代数系统(computer alegebra systems,CAS)的一部分:一个允许我们进行代数和数学计算的库。
主要功能:
安装SymPy
简化和展开
首先,导入 SymPy。然后定义 SymPy 变量,才能使用它们。通过创建 SymPy 的
symbols
来实现这一点。这些符号代表了数学变量:
import sympy
from sympy import latex
a, b, x, y = sympy.symbols("a b x y")
display(a,b,x,y)
然后,我们可以构建表达式和方程:
from IPython.display import Markdown, display
a = (x + 1)**2
b = x**2 + 2*x + 1
display(a)
print(latex(a))
display(b)
expanded = sympy.expand(a)
display(Markdown(f"$a = {latex(expanded)}$"))
a_minus_b = a-b
display(Markdown(f"$a-b = {latex(a_minus_b)}$"))
display(Markdown(f"$a-b$ $= {latex(sympy.simplify(a_minus_b))}$"))
等式判断
我们可以测试两个表达式是否相同,方法如下:
变量赋值和评估
在定义了一个 SymPy 符号并将其分配给 Python 变量后,不能简单地给 Python 变量赋值。如果这样做,变量将不再是一个符号。相反,你需要使用
subs()
方法将值与 SymPy 符号关联起来:
x, y = sympy.symbols("x y")
expr = x+y
result = expr.subs({x: 2, y: 5})
print(f"{expr=}, {result=}")
微分和积分
在 SymPy 中,积分和微分非常简单:
x = sympy.symbols("x")
expr = x**2
display(expr)
deriv = sympy.diff(expr)
display(deriv)
integral = sympy.integrate(deriv)
display(integral)
求解二次方程
求解二次方程很简单,只需提供二次方程的系数,然后运行 SymPy 的
solve()
函数即可: