SuperAPI AI 工具集

alterlab-sympy

数据与分析

查看项目

更新于 10-15 19:56

技能介绍

用途:该技能提供使用 SymPy(Python 符号数学库)进行精确符号计算的指导,适用于需要精确结果(如 sqrt(2) 而非 1.414…)的场景,包括符号方程求解、微积分、代数表达式化简、矩阵与线性代数、物理计算、数论、几何、组合数学,以及把表达式转换为 Python、C、Fortran 代码或 LaTeX 输出。

主要能力:核心包括符号与表达式创建(symbols、Symbol,可加 real、positive 等假设);化简与变形(simplify、expand、factor、cancel);微积分(diff 求导、integrate 定/不定/反常积分、limit、series);方程求解(solveset、solve、linsolve、nonlinsolve、dsolve);矩阵与线性代数(Matrix、逆、行列式、特征值、对角化、A.solve(b));物理(力学的 LagrangesMethod、矢量点积叉积、量子力学对易子);高级主题(几何、数论、组合、逻辑集合、统计、特殊函数、多项式);代码生成与输出(lambdify、codegen、latex)。

使用方式:先定义符号再构造表达式,否则会触发 NameError。为获得更好化简,可给符号加假设,如 x = symbols('x', positive=True, real=True),此时 sqrt(x**2) 返回 x。为保持精确算术,应使用 Rational(1, 2) 或 S(1)/2,避免 0.5。需要数值时用 evalf() 或 N()。循环中反复 subs() 与 evalf() 较慢,可用 lambdify(x, expr, 'numpy') 转为快速数值函数,再配合 NumPy、SciPy 使用(例如 scipy.optimize.fsolve 做数值求根)。求解器选择:solveset 用于代数方程,linsolve 用于线性方程组,nonlinsolve 用于非线性方程组,dsolve 用于微分方程,solve 为通用但较旧。

适用场景与限制:适合符号推导、公式化简、教学与生成文档;当方程无闭式解时可改用数值方法(如 nsolve)。若化简结果不符合预期,可尝试 factor、expand、trigsimp 或添加假设;powsimp、expand_log、logcombine 支持 force=True,simplify 无此选项。资料未提供安装命令、收费信息与具体版本要求,暂未提供。

参考资料:官方文档 https://docs.sympy.org/ ,教程 https://docs.sympy.org/latest/tutorials/intro-tutorial/index.html ,API https://docs.sympy.org/latest/reference/index.html 。