25 python扩展库SymPy初探(符号运算)
2019年8月4日 16:1400 导入扩展库
import sympy as sy
01 展开表达式 expand()
import sympy as sy
x,y,z=sy.symbols('x,y,z')
print(sy.expand(x*(y+z)))
print(sy.expand((x+y)**3))
print(sy.expand(x**(y+z)))
print(sy.expand(sy.sin(x+y),trig=True))
print(sy.expand_trig(sy.sin(x+y)))
x*y + x*z
x**3 + 3*x**2*y + 3*x*y**2 + y**3
x**y*x**z
sin(x)*cos(y) + sin(y)*cos(x)
sin(x)*cos(y) + sin(y)*cos(x)
欧拉公式:
x=sy.symbols('x',real=True)
print(sy.expand(sy.exp(sy.I*x),complex=True))
I*sin(x) + cos(x)
02 求解方程和方程组
求解方程
from sympy import *
a,b,c,x=symbols('a,b,c,x')
print(solve(a*x**2+b*x+c,x))
[(-b + sqrt(-4*a*c + b**2))/(2*a), -(b + sqrt(-4*a*c + b**2))/(2*a)]
求解方程组
from sympy import *
x,y=symbols('x,y')
print(solve((x**2+x*y+1,y**2+x*y+2),x,y))
[(-sqrt(3)*I/3, -2*sqrt(3)*I/3), (sqrt(3)*I/3, 2*sqrt(3)*I/3)]
03 积分运算
不定积分
from sympy import *
x=symbols('x')
print(Integral(x*sin(x),x).doit())
print(integrate(x*sin(x),x))
定积分
from sympy import *
x=symbols('x')
print(integrate(x*sin(x),(x,0,2*pi)))
-2*pi
from sympy import *
x=symbols('x')
print(Integral(sin(x)/x,(x,0,oo)).doit())
pi/2
04 微分运算
微分
from sympy import *
x=symbols('x')
print(Derivative(sin(x),x).doit())
print(diff(sin(x),x))
cos(x)
cos(x)
偏微分
from sympy import *
x,y=symbols('x,y')
print(diff(sin(x*y),x,2,y,3))
x*(x**2*y**2*cos(x*y) + 6*x*y*sin(x*y) - 6*cos(x*y))
05 求解微分方程
微分方程
from sympy import *
x=symbols('x')
f=symbols('f',cls=Function)
print(dsolve(Derivative(f(x),x)-f(x),f(x)))
Eq(f(x), C1*exp(x))
from sympy import *
x=symbols('x')
f=symbols('f',cls=Function)
eq=Eq(f(x).diff(x)+f(x),(cos(x)-sin(x))*f(x)**2)
classify_ode(eq,f(x))
print(dsolve(eq,f(x),hint='lie_group'))
Eq(f(x), 1/(C1*exp(x) - sin(x)))
from sympy import *
x=symbols('x')
print(simplify((x+2)**2-(x+1)**2))
2*x + 3
from sympy import *
x=symbols('x')
print(cancel((x**2-1)/(x+1)))
x - 1
07 泰勒展开式(泰勒多项式,泰勒级数)
from sympy import *
x=symbols('x')
print(series(cos(x),x,0,10))
print(series(sin(x),x,0,10))
print(series(exp(I*x),x,0,10))
1 - x**2/2 + x**4/24 - x**6/720 + x**8/40320 + O(x**10)
x - x**3/6 + x**5/120 - x**7/5040 + x**9/362880 + O(x**10)
1 + I*x - x**2/2 - I*x**3/6 + x**4/24 + I*x**5/120 - x**6/720 - I*x**7/5040 + x**8/40320 + I*x**9/362880 + O(x**10)

工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP




















