巧用Python编程,助力数学教学
2021-02-25安徽省阜阳市第三中学236000尚林哪
安徽省阜阳市第三中学(236000) 尚林哪 董 俊
1 Python 语言适用于辅助教学
近年来,在众多的程序设计语言中,Python 脱颖而出,应用最为广泛,跟其他程序设计语言相比,Python 作为一种面向对象的解释型计算机程序语言,其最主要的特点是语法简洁清晰, 能够把其他语言制作的模块很轻松的联结在一起,可用图形化界面直观呈现知识过程. Python 近几年比较流行,在大数据处理,人工智能方面也大显身手.
对数学教师而言,Python 语言简洁,易写易懂,至于一些复杂的案例,网上也都能找到丰富的源码资源,所以Python编程对教师的代码水平要求不高.
由于Python 的简单易学、开源、可扩展性、丰富的库、规范的代码等特点,所以笔者选择Python 编程辅助数学教学.
2 Python 编程辅助数学教学的意义
随着计算机技术的普及,大部分学生从小学就开始接触一些简单的计算机语言的编程,如c++,VB 等,这些语言简单易学,学生学习起来也很感兴趣. 2017 版普通高中数学课程标准中指出课程修订要坚持反映时代要求的基本原则,关注信息化环境下的教学改革. 在学生学习过程中,可以借助这些高级语言进行编程进而实现一些复杂问题的求解功能,使得学生容易获得学习上的成就感,也能实现不同学生获得不同的发展,实现以学生的发展为本的基本理念. 所以在高中数学教学中运用编程辅助教学不仅是可行的而且是很有意义的. 笔者将从以下几点阐述Python 编程在数学教学中的辅助作用.
2.1 辅助运算,培养数学运算素养
数学运算是指在明晰运算对象的基础上,依据运算法则解决数学问题的素养. 主要包括: 理解运算对象,掌握运算法则,探究运算思路,选择运算方法,设计运算程序,求得运算结果等. 计算机编程最大的特点就是强大的计算能力,例如在学习统计时,为了更好地研究、描述和更好地理解数据集,在课堂上往往需要计算均值、中位数、众数,甚至方差、标准差和相关系数,样本空间较小时,学生容易运算得到结果,可是实际问题中,样本空间往往比较大,计算也就难以完成,如果老师直接给出结果,学生可能无法接受,也无法获得活动经验,从而难以真正理解数据集. 这时教师如果借助Python动态模拟整个计算过程,学生就自然能够接受并且理解整个过程,得到不同程度的自我发展.
案例1. 二分法求方程的近似解
一元二次方程我们可以用公式求根,而指数方程、对数方程等超越方程和五次以上的高次代数方程不能用简单的代数运算求解,我们会学习二分法来求这些方程的近似解.如利用python 解决一个高次方程为例来加深学生对二分法算法思维的理解. 例如方程f(x) = x3+1.1x2+0.9x −1.4在区间[0,1]上的近似解.
思路分析: 求方程在[0,1]区间的近似解,可以先计算出区间端点值得函数值f(0)、f(1). 然后选取区间中间值计算选择函数值乘积小于0 的两个自变量,从而确定新的区间,再分别计算区间端点值处的函数值,和区间中间处的函数值,选择函数值乘积小于0 的两个自变量确定新的区间,循环操作,直至区间长度小于精确度,得到近似解. 程序代码如图1 所示:
图1
其实随着现代计算机技术的发展,像二分法、牛顿法、拟牛顿法、弦截法等在求解指数方程、对数方程等超越方程和五次以上的高次代数方程得到了广泛的应用,所以在我们的课堂上也不要再用以后你会学习到或者感兴趣的同学自己查阅资料这样的话来搪塞学生了.
2.2 注重过程,培养“四基”
新课程的课程目标要求通过高中数学的学习,学生能获得进一步学习以及未来发展所必需的数学基础知识、基本技能、基本思想、基本活动经验. 高中数学中很多知识学生只是被动接受了,并不能真正理解,大多是因为在学习中,没有注重知识产生的过程,没有获得基本活动经验. 所以,教师在教学过程中可以借助Python 将抽象的概念、抽象的过程描述出来,使学生理解其原理,真正做到知其然,知其所以然.
例如新课程标准概率主题中,要求结合具体实例理解概率的性质,掌握随机事件概率的运算法则,会用频率估计概率,而最著名的实例就是抛硬币的实验,但是课堂上不易完成大数据次数的操作,学生无法理解实验样本数与探究结果之间的动态关系,故而笔者采用Python 编程,进行大数据模拟整个过程,便于学生获得基本活动经验,理解随机事件的概率的意义.
案例2. 模拟抛硬币
在学习随机事件的概率时,最著名的实验就是抛硬币实验,投掷一枚质地均匀的硬币,它可能出现正面,也可能出现反面,教材中给出了历史上曾有蒲丰,皮尔逊等人做过抛掷几千次硬币的试验. 当然,这些需要大规模样本的实验数据的实验,教师不可能在课堂上完成,可以利用Python 快速模拟抛硬币的情况.
思路分析: 投掷一枚质地均匀的硬币,并且记录正面朝上占所有试验中的比率. Python 的randint(0,1)函数可以等概率,随机地返回0 与1 两个数,我们可以将返回的数值0 记为硬币的反面,1 记为硬币的正面,所以问题就转换成了: 统计大量重复试验中,结果为1 占总试验次数的比例. 程序代码如图2 所示.
图2
其运行结果如图3 所示.
图3
可见,随着硬币投掷次数的增加,正面朝上的几率逐渐稳定在0.5,这样学生再去理解在重复试验中,我们可以使用频率的稳定值作为事件发生的概率就深刻多了.
2.3 妙趣横生,增强学生自信心
新课程标准的课程目标要求: 学生能通过数学课程的学习,提高学习的兴趣,增强学好数学的自信心,养成良好的数学学习习惯,发展自主学习的能力. 但是传统数学课堂往往很枯燥, 教师们为了提高课堂的趣味性,激发学生学习的积极性,都是绞尽脑汁,各显神通. 如果能将Python 编程融入到数学课堂,会使教学内容更加丰富,会使课堂锦上添花,一定会调动起来学生学习数学的热情和激情,同时也会激发老师研究学生、研究数学的积极性,提高教学水平.
例如学习一些特殊函数时,函数的图像可以帮助学生更好地理解函数的性质, 尤其在学习指数函数与对数函数时,可以用Python 程序,绘制出准确直观的函数图像,帮助学生清晰的看到更完整的函数图像,进而更好地理解指数函数对数函数的性质,增强学生学习的兴趣.
古今中外数学界有很多很重要的猜想, 有意思的算法,奇妙的自然理论,例如著名的哥德巴赫猜想,1742年哥德巴赫给欧拉写了一封信,信中提出了一个猜想: 任一大于2 的偶数都可以写成两个质数之和. 但是哥德巴赫自己无法证明它,故此才写信请教当时赫赫有名的大数学家欧拉帮忙证明,但是欧拉一生也无法证明. 随着信息技术的发展,人们已经因现今数学界已经不使用“1 也是质数”这个约定,原初猜想的现代陈述为: 任一大于5 的偶数都可以写成两个质数之和.如果教师能借助Python 程序带着学生一起实现这一伟大猜想的验证,学生一定会感受到数学的价值,一定会更喜欢学习数学. 再比如秦九韶算法,斐波那契序列与黄金比例等等,这些如果能带着学生用Python 程序去体验过程,实现结果,学生一定会认识到数学的科学价值、应用价值、文化价值和审美价值.
案例3. 哥德巴赫猜想
哥德巴赫猜想任何一个充分大的偶数(大于等于6)总可以表示成两个素数之和. 下面我们用Python 编写程序将1000 用两个素数之和表示出来,我们可以用ⅠSprime( )函数.
程序代码如图4 所示.
图4
从结果可以验证哥德巴赫的猜想是正确的,把学生觉得无法实现验证的问题,不可捉摸的问题实实在在的摆在眼前,化抽象为具象,不仅使学生的疑惑得以解决,而且增加了学生对数学学习的兴趣.
将程序与数学内容结合起来,对学生来说,第一可以有效增强学生学习数学的兴趣, 第二可以加深学生对数学内容的理解, 第三可以为学生以后学习更复杂的数学内容及python 程序语言打下坚实的基础,在解决问题的过程中提升计算思维,进而提升学生的学科核心素养,达到教学的最终目标.