25 python扩展库SymPy初探(符号运算)

00 导入扩展库

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)))

06 化简表达式

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)

25 python扩展库SymPy初探(符号运算)的图1

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

1