基于Manipulate的数值分析交互式课件制作
2020-11-14段敏,谢进
段 敏,谢 进
(合肥学院 人工智能与大数据学院, 合肥 230601)
0 引 言
近20年来,中国在教育信息化方面投入很大。专家们写文章、作报告,老师们讲公开课、参加课件竞赛评奖,似乎一片繁荣景象,但信息技术只有深入学科才能真正发挥作用。数学教学中的信息技术可以分为3类:普适信息技术、数学教学中常用的信息技术和专题教学活动所需的信息技术。以数学为例,用好的学科教学平台备课和制作课件,比使用流行的普适的课件平台的效率提高10倍到100倍,而且课件的交互性和开放性好得多。[1]因此,推进教育教学与信息技术深度融合是实现课堂改革、教育教学质量“变轨超车”的突破口。[2]
作为高等学校的数学教师,在信息技术高度发展的今天,教师在数学教学活动中适时引入信息技术,让信息技术深度融合在数学教学之中,不断提高TPACK(即整合技术的学科教学知识)的能力。[3]要做到这一点,下功夫制作出具有自身特点和优势的,并能将自己教学艺术风格融入在制作课件的教学过程之中的课件。若能现场在学生面前制作而不是拿别人或网上或随书赠送的现成课件用于教学,达到“让学生看到思维过程”的境界,这是提高TPACK核心素养的必由之路之一。但目前教学中存在的最大问题是缺乏自制课件,尤其缺乏即时制作的能力/尽管高等学校的教学研究与改革一直在不断的深入,取得了很好的教学成果,但可以肯定的是,真正能适应信息技术与教育教学深度融合这种大势的教师,数量还很少,还远远不能满足时代的要求[4]。因此,提高教师TPACK的能力之一,是培养教师具有即时制作数学课件的能力与水平。只有这样,才能使技术、学科内容、教法实现真正的深度融合。
1 数学课件制作工具的软件选择
要实施深度融合,工具的选择尤为重要,按照张景中院士提出的“深入学科的信息技术”这一鲜明主张,选择Mathematica是最符合大学数学教师使用的数学软件,其中的Manipulate函数,架起了代码与图形用户界面交互式操作的桥梁。图形界面中的控件与想要调节的参数便有了类似指针的联系,有了它,开发数学交互式课件很简单,使用者就能像使用Windows图形用户界面一样方便。不管你从事哪方面的数学系列课程教学,只要教师按照自己的教学内容与教学方式,简单的几行代码,加上Manipulate的封装,一个具有交互式操作的图形用户界面立刻生成。通过拖动,伴随着动画与数字的实时改变,胜过你千言万语的讲解。
2 Manipulate函数功能简介
Manipulate是Mathematica高版本新开发的用于交互式运行的函数, 一般书写格式为:Manipulate[代码段,控件1,控件2,…,控件n]。代码段是程序区,用于完成算法的书写,反映的是算法思想的代码实现,最能体现程序设计风格的数学化。若以思维方式数学化的深刻内涵为引领,定能编写出高质量的好程序、好课件。控件1,控件2,…,控件n区域中的控件,是实施实时交互的源泉。简单地讲,Manipulate函数就是去操控函数的变量,它能够调用各式各样的控件以用户想要的方式进行操控,最后完成一个或多个变量在其定义域内变化而产生的动态过程[5],而且开发周期短,甚至可以在上课时边教学,边开发,最大的好处是突出以过程为中心的教学原则。
3 数值分析课件制作案例
下面仅选择数值分析中两个最重要的内容数据拟合与数值积分进行制作。首先,制作曲线拟合的课件,请输入以下代码并运行之:
Manipulate[ Module[{x},
Plot[Fit[points,Table[x^i,{i,0,order}],x],{x,-2,2},PlotRange->2,ImageSize->500,Evaluated->True]],
{{order,3,"拟合多项式次数"}},{{points,RandomReal[{-2,2},{5,2}]},Locator,LocatorAutoCreate->True}]
运行后,生成的交互式画面如图1所示,使用者就可以输入拟合次数,在图形界面上拖动点,观察曲线的变化,也可动态增加点与删除点,短短的一条代码,加上两个控件,一个控制拟合次数,一个用自动创建定位点输入拟合的数据,图形用户界面的数学课件即刻生成,非常简单。
图1 曲线拟合动态演示图
其次,制作数值积分计算的综合性课件,数值积分的计算方法有左矩形、右矩形、中矩形、梯形、Simpson公式、牛顿—柯特斯公式等。这些内容,只讲原理与公式,哪怕你讲的再完美,若不配上实时的计算、不去比较各种方法的误差,不以生动的动态图形显示,教学效果是不会显著的。现在有了Manipulate函数,上述问题得到彻底解决,下面的代码是复化中矩形计算定积分的函数模块:
MidBox[f,a_,b_,n_ ]:= Module[{tx1,tx2,xab,yab,jqz,jsz,wc},
tx1=Plot[f[x],{x,a,b},PlotStyle->RGBColor[0,0,0],AxesOrigin->{0,0},PlotLabel->"复化中矩形公式"];
xab=Range[a,b,(b-a)/n]; yab=Map[f, xab]; jqz=N[Integrate[f[x],{x, a, b}],7];
jsz=N[(b-a)/n* Sum[f[(xab[[i]]+xab[[i+1]])/2],{i,1,n,1}],7];
wc=Abs[jqz-jsz];tx2={};
For[i=1,i<=n, i++,
r=Graphics[
{RGBColor[0,0,0],Line[{{xab[[i]],0},{xab[[i]],f[(xab[[i]]+xab[[i+1]])/2]},{xab[[i+1]],f[(xab[[i]]+xab[[i+1]])/2]},{xab[[i+1]],0},{xab[[i+1]],yab[[i+1]]}}]}];AppendTo[tx2,r]];
Column[{Grid[{{"精确值",jqz},{"近似值",jsz},{"误差",wc} },Frame->All],
Show[tx1,tx2,ImageSize->300]},Alignment->{{Center,Center}}]]
仔细研读上述代码的算法,一部分是选择计算公式,另一部分是绘制用中矩形近似曲边梯形的图形。
限于篇幅,完全类似,只要对上述程序稍加修改,即可编写出左矩形、右矩形、梯形等的函数:
LeftBox[f_,a_,b_,n_]、RightBox[f_,a_,b_,n_]、Trapzoid[f_,a_,b_,n_]。
现在有了各种积分算法函数,用Manipulate封装一下:
Manipulate[ xz[f,a,b,n],
{{xz,LeftBox,"选择积分近似公式"},{LeftBox->"左矩形",RightBox->"右矩形",MidBox->"中矩形",Trapzoid->"梯形"}},
{{f,Sin,"输入被积函数名,自定义被积函数在代码最前端定义"}},
{{a,0,"积分下限"}}, {{b,1,"积分上限"}}, {{n,2},1,100,1,Appearance->"Labeled"} ]
运行后,立刻得到如图2所示的交互式用户界面,你可输入积分的上下限,可选择不同的计算公式,还可输入被积函数。若系统没有定义函数,还可以自定义函数。随着拖动区间个数,近似值与精确值和误差及图形等都动态变化,能对数值积分有更深入的理解。
图2 数值积分演示公式
总而言之,交互式输入通过调节控件类型选项,能够实现类似于windows的文本框、下拉式列表框、选项卡、滑杆、微调按钮等常用的交互式操作;也可设置初值、标签等一些提示信息;还可通过行列布局命令实现交互界面的各对象的布局。通过帮助文件,深入学习Manipulate操作命令中的各种选项的使用方法。仔细研读示例与模仿练习,定能提高交互式界面的数学课件设计水平。
4 进一步的思考
教学方式经历一次次的变革,但都没有像这次受疫情影响带来的变革大。各种教学平台的实现,仅仅是技术上提供了保证。因此,在疫情期间教学的真正成功的一堂课, 就是看老师的TPACK的贯彻程度如何?可以说,实施TPACK是对老师的教与学生的学的一次大考,是提高教学质量的催化剂。Manipulate架起了通向GUI(图形用户界面)的最后一公里,彻底结束了开发数学交互式课件的难度。而代码段的算法设计在Mathematica环境中一般都短小精悍,使即时设计成为可能,经Manipulate封装。一个交互式图形用户界面的数学课件瞬间生成,能真正使信息技术与教育教学深度融合,提高教师的TPACK的核心素养,达到润物细无声的效果。