天天看點

Python 用sympy做高數題,不定積分、定積分、極限、求導樣樣精通!

 求不定積分:

Python 用sympy做高數題,不定積分、定積分、極限、求導樣樣精通!
Python 用sympy做高數題,不定積分、定積分、極限、求導樣樣精通!
Python 用sympy做高數題,不定積分、定積分、極限、求導樣樣精通!
Python 用sympy做高數題,不定積分、定積分、極限、求導樣樣精通!
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
'''
           

求定積分:

Python 用sympy做高數題,不定積分、定積分、極限、求導樣樣精通!
Python 用sympy做高數題,不定積分、定積分、極限、求導樣樣精通!
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 原型,牛叉的! 第二題答案如下圖所示,完全一緻。

Python 用sympy做高數題,不定積分、定積分、極限、求導樣樣精通!

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