求不定积分:
from sympy import *
x = symbols('x')
def Deinteg(Func):
print('∫(',Func,')dx')
print('=',integrate(Func,x),'+ C\n')
f1x = 4*pow(x,3) + 3*x*x + 2*x + 1
f2x = x * exp(x) + exp(x)
f3x = exp(2*x)+cos(3*x)
f4x = sin(x)/(1+sin(x)+cos(x))
Deinteg(f1x)
Deinteg(f2x)
Deinteg(f3x)
Deinteg(f4x)
'''
输出结果:
--------
∫( 4*x**3 + 3*x**2 + 2*x + 1 )dx
= x**4 + x**3 + x**2 + x + C
∫( x*exp(x) + exp(x) )dx
= x*exp(x) + C
∫( exp(2*x) + cos(3*x) )dx
= exp(2*x)/2 + sin(3*x)/3 + C
∫( sin(x)/(sin(x) + cos(x) + 1) )dx
= x/2 - log(tan(x/2) + 1) + log(tan(x/2)**2 + 1)/2 + C
'''
求定积分:
from sympy import *
x = symbols('x')
def Deinteg(Func, upperL, lowerL):
print('∫[',upperL,',',lowerL,'](',Func,')dx')
print('=(',integrate(Func,x),')|[',upperL,',',lowerL,']')
print('=',integrate(Func,(x,upperL,lowerL)),'\n')
fx = 4*pow(x,3) + 3*x*x + 2*x + 1
gx = sin(x)/(1+sin(x)+cos(x))
Deinteg(fx, 0, 2)
Deinteg(gx, 0, pi/2)
'''
#输出结果:#
∫[ 0 , 2 ]( 4*x**3 + 3*x**2 + 2*x + 1 )dx
=( x**4 + x**3 + x**2 + x )|[ 0 , 2 ]
= 30
∫[ 0 , pi/2 ]( sin(x)/(sin(x) + cos(x) + 1) )dx
=( x/2 - log(tan(x/2) + 1) + log(tan(x/2)**2 + 1)/2 )|[ 0 , pi/2 ]
= -log(2)/2 + pi/4
'''
定积分的结果居然能保持 log(2)、pi 原型,牛叉的! 第二题答案如下图所示,完全一致。
附:sympy库的其它功能
#求极限
>>> limit(sin(x)/x, x, 0)
1
>>> limit(sin(x)/x, x, oo) #正无穷处极限
0
>>> limit(sin(x) * E**x, x, -oo)#负无穷处极限
0
>>> limit(1/x, x, 0, '+') #右极限
oo
>>> limit(1/x, x, 0, '-')#左极限
-oo
>>> limit(1/sin(x), x, oo) #极限不存在
AccumBounds(-oo, oo)
#求导
>>> diff(cos(x), x)
-sin(x)
>>> diff(cos(x)*sin(y), x, x, x) #多次求导(对x连续求3次偏导数)
sin(x)*sin(y)
>>> diff(cos(x)*sin(y), x,3) #与上式等价,对x求3阶偏导数
sin(x)*sin(y)
>>> diff(sinh(x)/E**y, x,x,y,y,y)
-exp(-y)*sinh(x)
>>> diff(sinh(x)/E**y, x,2,y,3)#与上式等价。对x求2阶偏导数,再对y求3阶偏导数
-exp(-y)*sinh(x)
#多次不定积分
>>> integrate(cos(x), x,x) #对 x 两次积分
-cos(x)
>>> integrate(cos(x), x,x,x) #对 x 三次积分
-sin(x)
>>> integrate(sinh(x)*cosh(y), x, y)
sinh(y)*cosh(x)
>>> integrate(sinh(x)*cosh(y), y, x)
sinh(y)*cosh(x)
#多重积分
>>> integrate(exp(-x**2 - y**2), (x, -oo, oo), (y, -oo, oo))
pi
sympy库还有泰勒展开、级数求和、微分方程、有限差分、拉普拉斯变换、逆拉普拉斯变换、傅里叶变换、逆傅里叶变换等等功能......
如果还没安装sympy库的话,可以用以下命令安装:
E:\>pip install sympy
... 省去N行 ...
Installing collected packages: mpmath, sympy
Successfully installed mpmath-1.2.1 sympy-1.7.1E:\>pip install sympy
Requirement already satisfied: sympy in e:\python\lib\site-packages (1.7.1)
Requirement already satisfied: mpmath>=0.19 in e:\python\lib\site-packages (from sympy) (1.2.1)E:\>