用途:SymPy 是 Python 的符号数学库,用数学符号进行精确计算,而非数值近似,覆盖代数、微积分、方程求解、线性代数、物理和代码生成,纯 Python 实现,无外部依赖。
主要能力:符号与表达式(symbols、Rational、simplify、expand、factor、collect、cancel、trigsimp);微积分(diff 求导、integrate 积分、limit 极限、series 级数展开);方程求解(solve、solveset、linsolve、nonlinsolve、dsolve 解 ODE、nsolve 数值求根);符号矩阵(Matrix、det、eigenvals、eigenvects、diagonalize、A.solve(b));代码生成(lambdify 转 NumPy 函数、ccode、fcode、latex);物理模块(向量分析、拉格朗日力学)。
使用方式:安装 pip install sympy,可选 pip install numpy matplotlib。典型流程:from sympy import symbols, solve, diff, integrate;x = symbols('x');solve(x2 - 5*x + 6, x) 得 [2, 3];diff(x3 + 2x, x) 得 3x2 + 2;integrate(x2, (x, 0, 1)) 得 1/3。数值评估用 lambdify(x, expr, 'numpy') 生成快速函数,而非循环 subs().evalf()。
适用场景:需要精确结果(如 sqrt(2) 而非 1.414)、符号化简、解析求解方程与 ODE、符号矩阵特征值、将表达式转为 C/Fortran/LaTeX 或 NumPy 函数。
限制:数值数组运算与数据线性代数应使用 numpy/scipy;统计建模用 statsmodels;无闭式解的方程用 nsolve 数值求根;simplify() 较慢,宜用具体函数;分数应使用 Rational() 或 S() 避免浮点误差;符号假设(如 positive=True)可改善化简;dsolve 对不支持的 ODE 类型会抛 NotImplementedError,可改用 scipy odeint。Jupyter 中可用 init_printing() 获得 LaTeX 渲染。