SymPy是符号数学的Python库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。
符号表示
from sympy import *
x = Symbol('x')
y = Symbol('y')
展开与折叠
expand( )展开方程
((x+y)**2).expand()
x**2 + 2*x*y + y**2
factor( )折叠方程
factor(x**2 + 2*x*y + y**2)
(x + y)**2
分离与合并
apart( )分离整式
together(1 + 2/(x - 1))
(x + 1)/(x - 1)
together( )合并整式
together(1/x+1/y+1/z)
(x*y + x*z + y*z)/(x*y*z)
简化表达式
simplify( )普通的化简
simplify((x**3 + x**2 - x - 1)/(x**2 + 2*x + 1))
x - 1
trigsimp( )三角化简
trigsimp(sin(x)/cos(x))
tan(x)
powsimp( )指数化简
powsimp(x**a*x**b)
x**(a + b)
solve( )解方程
第一个参数为要解的方程,要求右端等于0,第二个参数为要解的未知数
一元一次方程
solve(x * 3 - 6, x)
二元一次方程
solve([2 * x - y - 3, 3 * x + y - 7],[x, y])
{x: 2, y: 1}
1
2
limit( )求极限
dir=’+’表示求解右极限,dir=’-‘表示求解左极限
limit(1/x,x,oo,dir='+')
0
limit(1/x,x,oo,dir='-')
0
integrate( )求积分
不定积分
integrate(sin(x),x)
-cos(x)
定积分
integrate(sin(x),(x,0,pi/2))
1
diff( )求导
diff(x**3,x)
3*x**2
diff(x**3,x,2)
6*x
dsolve( )解微分方程
以 y′=2xyy′=2xy 为例
f =Function('f')
dsolve(diff(f(x),x) - 2*f(x)*x,f(x))
Eq(f(x), C1*exp(x**2))
矩阵化简
x1,x2,x3 = symbols('x1 x2 x3')
a11,a12,a13,a22,a23,a33 = symbols('a11 a12 a13 a22 a23 a33')
m = Matrix([[x1, x2, x3]])
n = Matrix([[a11, a12, a13], [a12, a22, a23], [a13, a23, a33]])
v = Matrix([[x1], [x2], [x3]])
f = m * n * v
f[0].subs({x1:1, x2:1, x3:1})
Matrix([[x1*(a11*x1 + a12*x2 + a13*x3) + x2*(a12*x1 + a22*x2 + a23*x3) + x3*(a13*x1 + a23*x2 + a33*x3)]])
a11 + 2*a12 + 2*a13 + a22 + 2*a23 + a33