SymPy 是 Python 中功能强大的符号计算(Computer Algebra)库,支持代数运算、微积分、方程求解、逻辑推理、矩阵运算等,并可将表达式输出为 LaTeX、MathML 或 C 代码。它适用于教学、科研、工程建模及计算机代数系统(CAS)构建。
安装:
nginx
pip install sympy
常见应用场景:
(1)数学教学中的公式推导与验证。
(2)自动代数化简、解方程、符号求导积分。
(3)建立符号函数模型并进行理论分析。
(4)微分方程建模与求解。
(5)学术论文中公式排版与 Latex 输出
(6)与 Jupyter Notebook 配合进行可交互式符号计算。
(7)支持形式化验证与推理:SymPy 支持布尔表达式、集合运算等基础逻辑分析。
(8)代码生成与数学建模联动:通过 codegen() 可生成目标语言函数(如 C/C++)。
◆ ◆ ◆
核心概念
1、符号表达式(Symbolic Expression)
SymPy 的核心是通过符号(Symbol)对象定义未知数,构建可以代数变换和求解的表达式。
2、简化(Simplify)与展开(Expand)
SymPy 提供多种变形函数,如 simplify()、expand()、factor()、collect() 等,帮助用户将表达式化简或变换成指定形式。
3、符号求导与积分(Differentiation & Integration)
支持对表达式求偏导、定积分、不定积分。
4、方程求解(Equation Solving)
使用 solve() 对代数、微分方程等求解析解,也可用 dsolve() 求微分方程的通解或特解。
5、符号矩阵(Symbolic Matrix)
Matrix 对象支持行列式、逆矩阵、特征值等线性代数操作。
6、Latex 与可视化
SymPy 可输出 Latex 格式,支持 MathJax 渲染,便于在 Jupyter Notebook 或文档中展示数学表达式。
7、逻辑与集合支持
SymPy 支持布尔表达式、集合运算与集合简化,可用于形式化逻辑分析或集合代数建模。
◆ ◆ ◆
应用举例
例 1:构建符号与表达式
bash
from sympy import symbols, expand
x, y = symbols('x y') # 定义符号变量expr = (x + y)**3 # 构造表达式print(expand(expr)) # 展开表达式,输出:x**3 + 3*x**2*y + 3*x*y**2 + y**3
例 2:解代数方程
perl
from sympy import Eq, solve
x = symbols('x')eq = Eq(x**2 - 4, 0) # 构造方程 x² - 4 = 0sol = solve(eq, x) # 解方程print(sol) # 输出:[-2, 2]
例 3:求导与积分
cpp
from sympy import diff, integrate, sin
x = symbols('x')f = x * sin(x)
print(diff(f, x)) # 输出导数:sin(x) + x*cos(x)print(integrate(f, x)) # 输出不定积分:-x*cos(x) + sin(x)
例 4:微分方程求解
python
from sympy import Function, dsolve, Derivative
x = symbols('x')y = Function('y')ode = Derivative(y(x), x) - y(x) # 一阶线性微分方程 y' - y = 0sol = dsolve(ode, y(x))print(sol) # 输出通解:Eq(y(x), C1*exp(x))
例 5:矩阵计算
python
from sympy import Matrix
A = Matrix([[1, 2], [3, 4]])print(A.det()) # 行列式:-2print(A.inv()) # 逆矩阵:Matrix([[-2, 1], [3/2, -1/2]])
◆ ◆ ◆
常用函数说明
diff(expr, var)
对表达式求导。
参数:
expr:待求导表达式。
var:求导变量。
返回值:返回求导结果。
dsolve(eq, func)
求解微分方程。
参数:
eq:微分方程对象。
func:未知函数,如 y(x)。
返回值:解的表达式形式(Eq 对象)。
Eq(lhs, rhs)
构造等式表达式。
参数:
lhs:左边表达式。
rhs:右边表达式。
返回值:等式对象。
expand(expr)
展开表达式。
参数:
expr:待展开表达式。
返回值:展开后的表达式。
integrate(expr, var)
对表达式积分。
参数:
expr:被积函数。
var:积分变量,或区间元组 (var, a, b)。
返回值:积分结果(不定或定积分)。
Matrix(data)
创建一个符号矩阵对象。
参数:
data:二维列表或嵌套列表。
返回值:Matrix 对象,可进行矩阵运算。
simplify(expr)
对表达式自动化简。
参数:
expr:待化简的表达式。
返回值:简化后的表达式。
solve(eq, var)
解代数方程组。
参数:
eq:等式或等式列表。
var:待解变量(单个或列表)。
返回值:所有解的列表或字典。
symbols(names)
创建符号变量。
参数:
names:字符串或由逗号分隔的变量名。
返回值:Symbol 对象或对象组。
◆ ◆ ◆
补充说明
1、SymPy 不依赖第三方编译器,纯 Python 实现,可跨平台运行。
2、若需高性能数值计算,建议配合 NumPy、SciPy 使用。
3、在 Jupyter Notebook 中配合 init_printing() 可显示 LaTeX 公式。
4、可与 matplotlib、Plotly 等结合绘图,支持符号绘制函数图像。
5、SymPy 与数值计算结合使用
可将符号表达式转为数值函数(如 .evalf(), lambdify()),与 NumPy、matplotlib 配合进行数值计算与可视化。

"点赞有美意,赞赏是鼓励"