SymPy可以进行微分、积分、极限等计算,
比如有函数,可以使用sympy.subs()
进行变量代换,把代换为等其他变量或者常数。例如
1 2 3 4 5 6 7 8 9 10 11
| >>> x = sympy.symbols('x') >>> f = 1/x >>> f 1/x >>> y = sympy.symbols('y') >>> f = f.subs(x,y) >>> f 1/y >>> ans = f.subs(y,1) >>> ans 1
|
在微积分中,最基本的操作是求极限,SymPy中求极限使用函数sympy.limit()
1 2 3 4 5 6 7 8
| >>> f = 1/x >>> sympy.limit(f,x,0) oo >>> sympy.limit(f,x,sympy.oo) 0 >>> f = sympy.sin(x)/x >>> sympy.limit(f,x,0) 1
|
也可以使用函数sympy.diff()
进行求导的操作,可以在参数中设定求导的次数、变量等
1 2 3 4 5 6 7 8 9 10
| >>> f = 1/x >>> sympy.diff(f,x) -1/x**2 >>> sympy.diff(f,x,2) 2/x**3 >>> sympy.diff(f,x,10) 3628800/x**11 >>> f = sympy.exp(x*y)*x+sympy.sin(x**2+y) >>> sympy.diff(f,x,y,x) x**2*y**2*exp(x*y) - 4*x**2*cos(x**2 + y) + 4*x*y*exp(x*y) + 2*exp(x*y) - 2*sin(x**2 + y)
|
提到导数,这里提一下泰勒级数,这里可以使用sympy.series()
函数。其中包含参数expr
,x
,x0
,n
,dir
;分别表示函数、展开变量、展开点、展开的最高次、方向(等)。默认情况下,x0=0
,n=6
.
1 2 3 4 5 6 7
| >>> f = sympy.cos(x) >>> sympy.series(f,x) 1 - x**2/2 + x**4/24 + O(x**6) >>> sympy.series(f,x,1,10) cos(1) - (x - 1)*sin(1) - (x - 1)**2*cos(1)/2 + (x - 1)**3*sin(1)/6 + (x - 1)**4*cos(1)/24 - (x - 1)**5*sin(1)/120 - (x - 1)**6*cos(1)/720 + (x - 1)**7*sin(1)/5040 + (x - 1)**8*cos(1)/40320 - (x - 1)**9*sin(1)/362880 + O((x - 1)**10, (x, 1)) >>> sympy.series(f,x).removeO() x**4/24 - x**2/2 + 1
|
SymPy的积分使用函数sympy.integrate()
,可以计算不定积分、定积分、广义积分
例如
需要注意积分上下界在函数中的写法
1 2 3 4 5
| >>> f = 1/x >>> sympy.integrate(f,x) log(x) >>> sympy.integrate(f,(x,1,2)) log(2)
|
还有
1 2 3 4 5 6 7 8 9
| >>> g = sympy.exp(-x**2) >>> sympy.integrate(g,(x,-sympy.oo,0)) sqrt(pi)/2 >>> g = sympy.exp(-x) >>> sympy.integrate(g,(x,0,sympy.oo)) 1 >>> h = sympy.exp(-x**2-y**2) >>> sympy.integrate(h,(x,-sympy.oo,sympy.oo),(y,-sympy.oo,sympy.oo)) pi
|