Python 用sympy做高数题,不定积分、定积分、极限、求导样样精通!

 求不定积分:

 (1). \int (4x^{3} + 3x^{2} + 2x + 1) dx

(2). \int (x e^{x} + e^{x} ) dx

(3). \int (e^{2x} + \cos 3x) dx

(4.) \int \frac{\sin x}{1+\sin x+\cos x} dx 

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

求定积分:

(1). \int_{0}^{2} (4x^{3} + 3x^{2} + 2x + 1) dx

(2.) \int_{0}^{\frac{\pi }{2}} \frac{\sin x}{1+\sin x+\cos x} dx

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.1

E:\>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:\>

猜你喜欢

转载自blog.csdn.net/boysoft2002/article/details/115141151
今日推荐