徐明
【摘要】 Python語言具有強大的科學計算功能,將該語言引入到數學實驗教學有重要意義.選取高等數學教材中的實例,通過Python語言分別實現了對函數求解微分和積分的實驗.結果表明,Python語言能夠用簡潔的命令語句求解各類常見的微分和積分.
【關鍵詞】 Python;數學實驗;微分;積分
一、引 言
Python是一種解釋型、面向對象的高級程序設計語言.近年來,Python語言在數學建模和各類算法大賽中的應用備受關注.與傳統的數學軟件MATLAB相比,MATLAB的大部分常用功能都可以在Python中找到相應的擴展庫(或模塊)來實現.此外,用Python做科學計算有自身的優(yōu)勢 [1] :一方面,MATLAB是一款商用軟件,且價格昂貴,而Python及其絕大多數擴展庫則是完全免費的.另一方面,相對于MATLAB等數學軟件,Python具有強大的網絡通信等功能,使開發(fā)者更容易實現完整的應用程序開發(fā).鑒于Python語言強大的科學計算功能和廣闊的應用前景,將Python引入到數學實驗教學具有特殊的意義.下面僅從求解微分和積分方面介紹Python在數學實驗教學方面的應用.
二、相關實驗
求解微分和積分是高等數學實驗的基本內容,也是進行其他數學實驗的重要基礎 [2] .本實驗分為兩部分:求解函數的微分(或導數);求解函數的積分.實驗的目的是掌握相關命令求解函數微分和積分.實驗用到的例子均來自同濟大學編寫的《高等數學》 [3,4] 教材(第七版).本實驗的實驗環(huán)境是Windows10+Python3.5,最主要的工具是Python中符號計算模塊SymPy.
(一)求解函數的微分或導數
求解函數的微分關鍵是求導運算,因此,這里僅討論求解函數的導數,它可以通過SymPy模塊中的命令diff來實現.diff命令的基本語法是:diff(f,x,kwargs),其中f表示待求導的函數,x為函數的求導自變量,kwargs表示求導運算的其他設置,如階數等.下面從求解單變量函數的導數和多變量函數的偏導數兩方面進行實驗.
先看diff命令用于單變量函數求導的例子.
例1 ??f(x)=x3+4cosx-sin π 2 ,求f′(x)及f′? π 2?Symboln@@
為了有效地調用相關命令,在程序開始時需先導入SymPy模塊.代碼如下:
from sympy import *
另外,在進行符號運算前還需先指定符號變量.代碼如下:
x=symbols(′x′)
接著,用diff命令求解f′(x),代碼如下:
diff(x**3+4*cos(x)-sin(pi/2),x)
輸出結果為:3*x**2-4*sin(x),
即f′(x)=3x2-4sinx.
最后,計算f′? π 2? ,代碼如下:
expr1=diff(x**3+4*cos(x)-sin(pi/2),x)
expr1.subs(x,pi/2)
輸出結果為:3*x**2-4*sin(x),
即f′? π 2? =-4+ 3π2 4 .
diff命令還可以用于對多變量函數求偏導.
(二)求解函數的積分
求解函數的積分,可以使用SymPy模塊中的命令integrate,其基本語法是:integrate(f,x),或integrate(f,(x,a,b)),其中f表示待求積分的函數,x表示函數的自變量,a,b分別表示積分上下限.下面從求解一元函數的積分和多元函數的重積分兩方面進行實驗.
先看求解一元積分的例子.
例2 ??分別計算不定積分∫e ?x ?dx和定積分∫1 0e ?x ?dx
先調入SymPy模塊,并指定符號變量.代碼為:
from sympy import*;x=symbols(′x′)
使用integrate命令求不定積分∫e ?x ?dx,代碼為:
integrate(exp(sqrt(x)),x)
輸出結果為:2*sqrt(x)*exp(sqrt(x))-2*exp(sqrt(x)),即 2 x e ?x ?-2e ?x ?.
使用integrate命令也可求定積分∫1 0e ?x ?dx,代碼為:
integrate(exp(sqrt(x)),(x,0,1))
輸出結果為:2.
另外,使用integrate命令也可以求反常積分.例如,計算反常積分∫ +∞ ?-∞ ?1 1+x2 dx,可使用命令integrate(1/(1+x**2),(x,-oo,oo)),其中,兩個o表示無窮.
重積分的計算比一元積分的計算往往要復雜得多,下面僅對求解二重積分進行討論.
如果積分區(qū)域是矩形,重積分的計算與一般積分的計算類似,例如,求解
D xydσ,其中D是由直線
ySymbol}@@1,xSymbol}@@2以及兩個坐標軸圍成的矩形區(qū)域.此時,可直接使用integrate命令求解積分為:integrate(x*y,(x,0,1),(y,0,2)).如果積分區(qū)域不是矩形,用integrate往往不能一次性地直接計算出結果,而需要將重積分轉化為累次積分再計算.
三、小 結
綜上可知,恰當利用Python的相關模塊SymPy,能夠用簡潔的命令語句求解出常見的函數微分和積分.與傳統的數學軟件相比,Python目前在計算復雜積分方面的功能還不夠強大.但Python是純粹的免費軟件,且在數值計算方面的能力仍在不斷提升.這里,對Python在微積分實驗教學中的應用做了積極探索.可以看出,此類數學實驗除了有助于學生理解和應用所學數學知識,對于學生領會Python語言本身的編程思想也有一定幫助.
【參考文獻】
[1]張若愚.Python科學計算[M].北京:清華大學出版社,2012.
[2]程村.微積分實驗教學模式研究[J].數學學習與研究:教研版,2015(21):24-25.
[3]同濟大學數學系.高等數學(上冊):第七版[M].北京:高等教育出版社,2014.
[4]同濟大學數學系.高等數學(下冊):第七版[M].北京:高等教育出版社,2014.