SymPy 是完全使用 Python 编写的一个符号计算库,也是著名开源计算软件 SageMath 的重要组成部分,是数学学习和教学的的好帮手。其功能主要涵盖以下几个方面:
- 多项式的合并、展开、化简
- 微积分运算
- 微分方程求解
- 线性代数运算
- 系数匹配
- 绘图
好了,下面列举一些我整理的范例。
声明:SymPy 只是一个库,不要拿来和 Mathematica 这类专业软件比。把它当作科学计算的辅助工具,做数值求解前的公式推导还是挺不错的。
公式推导
符号变量
from sympy import *
# 新建符号 x, y
x, y = symbols('x y')
# 指定符号定义域,x>0
x = symbols('x', positive = True)
# 新建多个符号
xs = symbols('x_1:5')
xs
(x_1, x_2, x_3, x_4)
# 根据字符串建立表达式
expr_raw = 'x**2 + 2*x + 1'
expr = sympify(expr_raw)
expr
多项式
# 展开
x, y, z = symbols('x y z')
y = expand((x + y + 1)**2)
y
# 因式分解
z = factor(y)
z
# 合并同类项
g = collect(y, x)
g
# 因式拆解
p = apart(1/((1 + x)* (3 + x)))
p