开源数学软件SageMath在高中导数教学中的应用*
2022-02-19周星辰
周星辰
(1.曲阜师范大学网络信息中心,山东 曲阜 273165;2.桂林电子科技大学广西密码学与信息安全重点实验室,广西 桂林 541004)
引言
数学软件功能强大,简单易学,在教学和科研中有重要的作用。目前,相关数学软件方面的研究论文大多为探究它们在大学数学教学中的辅助作用,而中学数学教学中涉及到数学软件的论文较少。例如,杨婷婷分析和研究了基础数学软件应用于高中数学教学的优势[1]。袁子绚以“图形与几何”部分为例探讨了动态数学软件如何辅助初中数学教学[2]。杨振平分析了MATLAB等数学软件在可视化方面的优势,让学生直观感受并深刻理解抽象的数学概念和性质[3]。在建构主义学习理论的支持下,李一甲利用MATLAB软件的优势设计了高中概率与统计课程的教学案例[4]。
目前,主要的数学软件有MATLAB、Mathematica、Maple和Magma。但是这些数学软件都是商业软件并且价格比较昂贵,许多学校的经济都承受不起。因此,本文引入一款功能强大且免费的数学软件来辅助高中数学教学。SageMath是一个免费且开源的数学软件,可用于代数、几何、数论、密码学、数值计算以及其他相关领域的教学和科研。SageMath的总体目标是成为一个实用的、高效的、免费的、开源的数学软件以代替MATLAB、Mathematica、Maple和Magma。为了方便,SageMath还提供了易于使用的网页版工作界面SageMathCell 和CoCalc。用户只需要了解基本的程序语言就可以线上使用SageMath的计算、编程、绘图和动画功能。
本文以导数的概念及其意义的课程内容为例,探讨如何利用开源数学软件SageMath辅助高中数学教学,进而提高学生爱数学,做数学的主观能动性,改善课堂教学质量。
一、利用数学软件辅助高中导数教学
在高中数学人教A版选择性必修二教材中,第五章的内容是一元函数的导数及其应用,该章内容挖掘了导数的本质,通过物理运动及几何切线两方面展现了数学无限趋近的思想。但是,高中学生的认知水平难以理解“无限逼近”的数学思想,这是导数教学的障碍和难点。另外,高中学生的逻辑思维能力也难以理解教学内容中涉及的 “以直代曲、数形结合”等思想。这些都是导数教学中遇到的瓶颈。
为了解决上述教学难点,教师可以利用数学软件强大的编程、计算、绘图和动画功能进行“数学实验”,引导学生观察和分析实验结果,从而揭示抽象知识的形成过程,发现数学问题的规律和本质。例如,课堂上对高台跳水问题进行讨论时,可以利用数学软件计算运动数据,并用该数据展示时间间隔趋近于0时平均速度逼近瞬时速度的数学过程。对导数的几何意义进行分析探讨时,利用数学软件的程序编写及动画演示功能为学生直观演示割线变切线这一数学动态过程,让他们深入掌握“数形结合”及“无限逼近”等思想。对函数性质进行深入研究时,利用数学软件的计算绘图功能解出驻点并绘制函数图象,可以让函数图形化,由抽象变形象,对于函数的性质也能简单直观地反映出来。对曲边梯形的面积如何计算进行分析探讨时,利用数学软件的动画功能演示曲边梯形面积如何计算这一动态步骤,再通过数学软件的程序功能展示如何计算曲边梯形面积近似值这一逼近的全过程。其中采用多种近似代替方法编写程序计算出所有小矩形的面积之和并逐步改变等分数,让学生直观感受,抽象思维转变为形象思维,更能深入理解这一过程。另外,导数教学中运算量比较大这一问题也能通过数学软件强大的数值计算功能得以解决。例如,计算平均变化率和定积分等。从而可以避免复杂的运算,节省课堂时间,提高教学效率。总之,利用数学软件辅助“一元函数的导数及其应用”的教学可以解决传统教学方式不能很好呈现的一些教学难题。
二、“导数的概念及其意义”的案例设计与分析
本节以教科书中第五章第一节内容“导数的概念及其意义”为例,简单讲述如何利用开源数学软件SageMath辅助课程教学。如下图所示,首先利用该数学软件的计算功能演示时间间隔趋近于0时平均速度无限逼近瞬时速度这一动态过程。其次,利用SageMath的动画功能直观演示动态变化动画:“割线变切线”,让“无限逼近”的抽象思想转化为形象生动的几何图形变换。最后,运用该软件的计算和绘图功能引出导函数的概念。
图1 案例设计与分析的总体方案
1.情境设置,新课导入
教师课堂展示一节运动员进行高空跳水的动画影片。
【教师提问】在高台跳水运动中,运动员相距跳水水面的高度设定为h(单位:m),运动员起跳后的时间设定为t(单位:s),二者存在函数关系h(t)=-4.9t2+4.8t+11。设定跳水运动员在起跳后的某一时刻为t0,那大家讨论下t0这一时刻运动员的瞬时速度是多少?
【学生回答】跳水运动员在t0时刻的瞬时速度想求解,关键要探求t=t0附近平均速度如何变化。
先求出t0时刻到t0+Δt的平均速度
【教师提问】当t0=2s时,瞬时速度怎么求呢?
【师生活动】教师利用基于SageMath的数学软件平台进行数学实验操作,向学生演示数据的动态变化情况。从2s到(2+Δt)s这段时间内平均速度为
(1)当Δt<0时,取Δt的初始值为-0.1,令Δt→0,编写SageMath代码如下:
x=-0.1
for i in range(6) :
f=-4.9*x-14.8
print(‘当 *t={0:.6f} 时, 平均速度为 {1:.6f}’.format(x, f))
x=x*0.1x
运行结果为:
当Δt=-0.100000 时,平均速度为 -14.310000
当Δt=-0.010000 时,平均速度为 -14.751000
当Δt=-0.001000 时,平均速度为 -14.795100
当Δt=-0.000100 时,平均速度为 -14.799510
当Δt=-0.000010时,平均速度为 -14.799951
当Δt=-0.000001时,平均速度为 -14.799995
(2)当Δt>0时,取Δt初始值为0.1,令Δt→0,编写SageMath代码如下:
x=0.1
for i in range(6) :
f=-4.9*x-14.8
print(‘当 *t={0:.6f} 时, 平均速度为 {1:.6f}’.format(x, f))
x=x*0.1
运行结果为:
当Δt=0.100000 时,平均速度为 -15.290000
当Δt=0.010000 时,平均速度为 -14.849000
当Δt=0.001000 时,平均速度为 -14.804900
当Δt=0.000100 时,平均速度为 -14.800490
当Δt=0.000010时,平均速度为 -14.800049
当Δt=0.000001时,平均速度为 -14.800005
通过以上程序数据的观测可得知,令Δt由正负两方向朝0逐渐趋近时,平均速度都逼近常量-14.8。则t=2s的瞬时速度可由这个常量来表示,计算公式展示为:
【设计目的】目前大多数传统课堂及教材中,高台跳水涉及的无限趋近过程没有进行信息技术的阐述,而是直接给出的计算结果。传统教学方式难以体现无限趋近过程,学生难以理解。除此之外,课程内容涉及很多重复的运算,如果用计算器的话,需要花费大量时间。而使用SageMath软件,只需编写几行代码和一个循环语句就能让学生直观感受无限趋近这一思想的形成过程,进而培养学生的学习兴趣。通过数学实验,学生能够从实验数据中感知逼近思想,更深刻地理解瞬时速度的意义。
【教师提问】上面已经计算出t=2s时的瞬时速度,那么在任一时刻t0的瞬时速度怎么表述呢?
【学生活动】用t0代替2s,通过类比得到某时刻t0的瞬时速度的计算公式:
2.推导归纳,概念导出
【教师提问】通过前面问题的归纳分析,是否找出什么规律或定义呢?
【师生讨论】依据运动员高台跳水这一课堂案例,学生分组讨论、找出规律、概括定义。
定义:在x=x0处函数f(x)的瞬时变化率是
称为函数y=f(x)在x=x0处的导数,记作f′(x0)或
【设计目的】带领学生将具体的数学动态案例归纳出导数的概念,增进特殊到一般这一数学思想的领悟与体会。
3. 分析导数的几何意义
【教师提问】大家想知道导数f′(0x)的几何意义吗?以f(x)=x2,x0=0.5为例,运行如下SageMath代码可以得到割线变切线过程的动画。
x=SR.var(“x”)
f=plot(x^2, (-0.5,1.8), color=’blue’,legend_label=’$x^2$’)
f +=point( (0.5,0.25), color=’red’,pointsize=20)
f +=text(‘A (0.5,0.25)’, (0.7,0.15), color=’red’)
g=[(f+plot(k*(x-0.5)+0.25, (-0.2,1.5),color=’green’, ymin=-0.5, ymax=2))
for k in [1.8..1.2,step=-0.15]]
g.append(f+plot((x-0.5)+0.25, (-0.2,1.5),color=’red’, ymin=-0.5, ymax=2))
a=animate(g)
a.show(delay=100, iterations=3)
教师课堂展示动画,学生能清晰地观察到割线变切线的动态趋近过程。如图2所示,蓝线曲线为y=f(x)的图像(教师随堂更改曲线的函数式),绿线直线是经过动点和定点A(0.5, 0.25) 的割线。当动点缓慢地趋近定点A时,经过定点A及动点的割线也在缓慢地靠近定点A处的切线(红色)。
图2 割线和切线
【教师提问】同学们认真观察一下割线的斜率有着怎样的变化?
【学生议论】随着动点逐渐接近定点,割线逐渐与切线重合,从而推出割线斜率Δx逐步逼近切线斜率k。因此,函数f(x)在x=x0处的导数的几何意义就是过这一点的切线的斜率k,即。
【设计目的】教师通过数学软件SageMath平台展示程序动画,让数学“无限趋近”思想的感知过程能清晰形象生动地呈现在课堂上,激发学生导数学习的积极性。
4.函数的导函数
教师带领学生对运动员高台跳水问题进行几何角度的分析。根据函数h(t)=-4.9t2+4.8t+11,教师利用SageMath平台的编程绘图功能将运动员高台跳水的动态过程绘制出运动轨迹曲线。则t时刻曲线上此点的切线斜率就是它在这一时刻的瞬时速度。
根据SageMath平台数学实验结果可知晓,x是一个具体值时f′(x) 也是一个具体确定值。然而,x的数值发生变化时f′(x)的值也相应变化。因此f′ (x)是x的函数,称之为f(x)的导函数,简称为导数,有时也记作y′。
结语
在数学软件SageMath平台的辅助下,本文采用课堂上进行数学实验的模式,以问题驱动为前提,让学生进行程序试验探索、观察、归纳、总结。借助SageMath平台的编程、计算、绘图和动画等强大功能,突破传统导数教学所不能解决的教学障碍难点,将抽象的数学思想变成有趣的、形象的、动态的数学动画,或让学生亲手设计数学实验、编写程序,自主探索,发现数学规律,归纳数学思想。以此增强高中学生数学学习的抽象思维能力及爱数学做数学的主观能动性,进而提高课堂教学质量。