
关于
SymPy 是一个 Python 符号数学库,使用数学符号而非数值近似进行精确计算。
name: sympy description: "SymPy 是一个 Python 符号数学库,能够使用数学符号进行精确计算,而非数值近似。" license: https://github.com/sympy/sympy/blob/master/LICENSE metadata: skill-author: K-Dense Inc. risk: unknown source: "https://github.com/sympy/sympy"
SymPy - Python 符号数学
概述
SymPy 是一个 Python 符号数学库,能够使用数学符号进行精确计算,而非数值近似。本技能提供使用 SymPy 进行符号代数、微积分、线性代数、方程求解、物理计算和代码生成的全面指导。
何时使用此技能
在以下情况使用此技能:
- 符号求解方程(代数方程、微分方程、方程组)
- 执行微积分运算(导数、积分、极限、级数)
- 操作和化简代数表达式
- 符号化处理矩阵和线性代数
- 进行物理计算(力学、量子力学、向量分析)
- 数论计算(素数、因式分解、模运算)
- 几何计算(2D/3D 几何、解析几何)
- 将数学表达式转换为可执行代码(Python、C、Fortran)
- 生成 LaTeX 或其他格式化数学输出
- 需要精确数学结果时(例如
sqrt(2)而非1.414...)
核心能力
1. 符号计算基础
创建符号和表达式:
from sympy import symbols, Symbol
x, y, z = symbols('x y z')
expr = x**2 + 2*x + 1
# 带假设条件
x = symbols('x', real=True, positive=True)
n = symbols('n', integer=True)
化简和操作:
from sympy import simplify, expand, factor, cancel
simplify(sin(x)**2 + cos(x)**2) # 返回 1
expand((x + 1)**3) # x**3 + 3*x**2 + 3*x + 1
factor(x**2 - 1) # (x - 1)*(x + 1)
详细基础内容: 参见 references/core-capabilities.md
2. 微积分
导数:
from sympy import diff
diff(x**2, x) # 2*x
diff(x**4, x, 3) # 24*x(三阶导数)
diff(x**2*y**3, x, y) # 6*x*y**2(偏导数)
积分:
from sympy import integrate, oo
integrate(x**2, x) # x**3/3(不定积分)
integrate(x**2, (x, 0, 1)) # 1/3(定积分)
integrate(exp(-x), (x, 0, oo)) # 1(广义积分)
极限和级数:
from sympy import limit, series
limit(sin(x)/x, x, 0) # 1
series(exp(x), x, 0, 6) # 1 + x + x**2/2 + x**3/6 + x**4/24 + x**5/120 + O(x**6)
详细微积分运算: 参见 references/core-capabilities.md
3. 方程求解
代数方程:
from sympy import solveset, solve, Eq
solveset(x**2 - 4, x) # {-2, 2}
solve(Eq(x**2, 4), x) # [-2, 2]
方程组:
from sympy import linsolve, nonlinsolve
linsolve([x + y - 2, x - y], x, y) # {(1, 1)}(线性)
nonlinsolve([x**2 + y - 2, x + y**2 - 3], x, y) # (非线性)
微分方程:
from sympy import Function, dsolve, Derivative
f = symbols('f', cls=Function)
dsolve(Derivative(f(x), x) - f(x), f(x)) # Eq(f(x), C1*exp(x))
详细求解方法: 参见 references/core-capabilities.md
4. 矩阵和线性代数
矩阵创建和运算:
from sympy import Matrix, eye, zeros
M = Matrix([[1, 2], [3, 4]])
M_inv = M**-1 # 逆矩阵
M.det() # 行列式
M.T # 转置
特征值和特征向量:
eigenvals = M.eigenvals() # {特征值: 重数}
eigenvects = M.eigenvects() # [(特征值, 重数, [特征向量])]
P, D = M.diagonalize() # M = P*D*P^-1
求解线性方程组:
A = Matrix([[1, 2], [3, 4]])
b = Matrix([5, 6])
x = A.solve(b) # 求解 Ax = b
全面线性代数: 参见 references/matrices-linear-algebra.md
5. 物理和力学
经典力学:
from sympy.physics.mechanics import dynamicsymbols, LagrangesMethod
from sympy import symbols
# 定义系统
q = dynamicsymbols('q')
m, g, l = symbols('m g l')
# 拉格朗日量 (T - V)
L = m*(l*q.diff())**2/2 - m*g*l*(1 - cos(q))
# 应用拉格朗日方法
LM = LagrangesMethod(L, [q])
向量分析:
from sympy.physics.vector import ReferenceFrame, dot, cross
N = ReferenceFrame('N')
v1 = 3*N.x + 4*N.y
v2 = 1*N.x + 2*N.z
dot(v1, v2) # 点积
cross(v1, v2) # 叉积
量子力学:
from sympy.physics.quantum import Ket, Bra, Commutator
psi = Ket('psi')
A = Operator('A')
comm = Commutator(A, B).doit()
详细物理能力: 参见 references/physics-mechanics.md
6. 高等数学
本技能包含以下全面支持:
- 几何: 2D/3D 解析几何、点、线、圆、多边形、变换
- 数论: 素数、因式分解、最大公约数/最小公倍数、模运算
- 代码生成: 将表达式转换为 Python、C、Fortran 代码
- LaTeX 输出: 生成格式化数学表达式
兼容工具
Claude CodeCursor
标签
AI与机器学习