徐明
【摘要】 Python语言具有强大的科学计算功能,将该语言引入到数学实验教学有重要意义.选取高等数学教材中的实例,通过Python语言分别实现了对函数求解微分和积分的实验.结果表明,Python语言能够用简洁的命令语句求解各类常见的微分和积分.
【关键词】 Python;数学实验;微分;积分
一、引 言
Python是一种解释型、面向对象的高级程序设计语言.近年来,Python语言在数学建模和各类算法大赛中的应用备受关注.与传统的数学软件MATLAB相比,MATLAB的大部分常用功能都可以在Python中找到相应的扩展库(或模块)来实现.此外,用Python做科学计算有自身的优势 [1] :一方面,MATLAB是一款商用软件,且价格昂贵,而Python及其绝大多数扩展库则是完全免费的.另一方面,相对于MATLAB等数学软件,Python具有强大的网络通信等功能,使开发者更容易实现完整的应用程序开发.鉴于Python语言强大的科学计算功能和广阔的应用前景,将Python引入到数学实验教学具有特殊的意义.下面仅从求解微分和积分方面介绍Python在数学实验教学方面的应用.
二、相关实验
求解微分和积分是高等数学实验的基本内容,也是进行其他数学实验的重要基础 [2] .本实验分为两部分:求解函数的微分(或导数);求解函数的积分.实验的目的是掌握相关命令求解函数微分和积分.实验用到的例子均来自同济大学编写的《高等数学》 [3,4] 教材(第七版).本实验的实验环境是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表示无穷.
重积分的计算比一元积分的计算往往要复杂得多,下面仅对求解二重积分进行讨论.
如果积分区域是矩形,重积分的计算与一般积分的计算类似,例如,求解
D xydσ,其中D是由直线
ySymbol}@@1,xSymbol}@@2以及两个坐标轴围成的矩形区域.此时,可直接使用integrate命令求解积分为:integrate(x*y,(x,0,1),(y,0,2)).如果积分区域不是矩形,用integrate往往不能一次性地直接计算出结果,而需要将重积分转化为累次积分再计算.
三、小 结
综上可知,恰当利用Python的相关模块SymPy,能够用简洁的命令语句求解出常见的函数微分和积分.与传统的数学软件相比,Python目前在计算复杂积分方面的功能还不够强大.但Python是纯粹的免费软件,且在数值计算方面的能力仍在不断提升.这里,对Python在微积分实验教学中的应用做了积极探索.可以看出,此类数学实验除了有助于学生理解和应用所学数学知识,对于学生领会Python语言本身的编程思想也有一定帮助.
【参考文献】
[1]张若愚.Python科学计算[M].北京:清华大学出版社,2012.
[2]程村.微积分实验教学模式研究[J].数学学习与研究:教研版,2015(21):24-25.
[3]同济大学数学系.高等数学(上册):第七版[M].北京:高等教育出版社,2014.
[4]同济大学数学系.高等数学(下册):第七版[M].北京:高等教育出版社,2014.