浅谈Mathematica在组合数学教学中的应用

时间:2022-03-20 10:04:05 来源:网友投稿

摘要:利用数学软件强大的符号计算功能,我们可以改变传统课堂的教学方式,并收到良好的教学效果。本文通过用Mathematica解数列递归关系的例子,来说明Mathematica在组合数学教学中的巨大功效。数学在某种程度上也可以变成一门“实验科学”。

关键词:组合数学;Mathematica;递归关系

中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2014)23-0114-02

一、引言

组合数学是数学的一个基本分支学科,也是高等院校数学专业的专业必修课,它主要研究离散对象在各种约束条件下的安排和配置问题。近年来计算机技术的飞速发展对我们的生活有了越来越大的影响。计算机计算速度的提升,使我们能够解决许多以往难以想象的大规模的计算问题。但计算机裸机并不能自己进行运算,它需要相应的程序作为基础,而这些程序的基础又往往是一些组合算法,因此组合数学在计算机技术的发展中起着非常重要的作用。反过来,计算机技术特别是数学软件也可以在组合数学的教学中发挥作用。现在有几款比较成熟的数学软件,比如Mathematica,Maple,Matlab,它们都具有强大的数值计算和符号计算功能,可以给我们的数学研究与教学带来极大的便利。在教学中适当地使用这些软件,同时教会学生使用这些软件,可以激发学生的学习热情,取得更好的教学效果,同时也让学生有一技之长,对他们日后的工作和学习都是很有帮助的。本文通过用Mathematica求解数列递归关系的例子,来说明Mathematica在组合数学教学中的巨大功效。

二、使用Mathematica求解数列递归

(一)求解线性齐次递归关系

求解线性递归关系(齐次或者非齐次)是组合数学的重要内容,我们举一个例子来说明:an=5an-1-6an-2,n≥2。在传统的数学教学中,我们采用特征方程的方法:上述递归关系的特征方程是x2=5x-6,两个特征根是x1=2,x2=3,因为两个特征根不相等,所以数列的通项公式是an=c12n+c23n,其中c1,c2是任意的常数。

在Mathemacita中,求解递归关系的命令是RSolve。我们只需要在Mathematica的工作环境中输入

RSolve[{a[n]==5a[n-1]-6a[n-2]},a[n],n]

(注意我们要用两个等号==来表示相等,一个等号=表示的是赋值)然后运行(按Shift+Enter),就得到了以下结果

a[n] 2n C[1]+3n C[2]

注意在Mathematica中,两个任意的常数是用C[1],C[2]来表示的。

如果给定了初值,比如a0=1,a2=4,那么我们只需要改一下命令

RSolve[{a[n]==5a[n-1]-6a[n-2],a[0] 1,a[1] 4},a[n],n]

运行之后就得到

a[n] -2n+2 3n

(二)求解线性非齐次递归关系

求解线性非齐次递归关系是一个比较困难的问题,主要的难点在于要先找到一个特解。虽然也有现成的规则,但因为非常烦琐而难以记忆,学生要么记不住这些规则,要么记住了但不明白为什么,实际的掌握效果是很差的。另外,求解一个非齐次的递归关系往往需要较长的时间,一般程度的学生大约需要花十分钟,而且很容易算错,这导致学生不会做很多的练习,计算的经验相当缺乏。利用Mathematica,我们可以在短时间内演算大量的例子,并且通过改动递归关系中的参数,用直观的结果让学生体会解的细微变化,这样可以给学生留下较为深刻的印象,并激发他们学习的热情。

1.比如我们要求解an=5an-1-6an-2+(n2+2),我们在Mathematica中输入

RSolve[{a[n]==5a[n-1]-6a[n-2]+(n^2+2)},a[n],n]

运行后就能得到

a[n] 1/2(17+7n+n2)+2n C[1]+3n C[2]

初始的非齐次项n2+2是n的二次多项式,特解(n2+7n+17)也是n的二次多项式,很符合常理,也符合学生们的预期。

2.如果我们改变一下非齐次项,多一个2的幂次,变为an=5an-1-6an-2+(n2+2)2n,它的解会有什么变化呢?我们在Mathematica中输入

RSolve[{a[n]==5a[n-1]-6a[n-2]+(n^2+2)2^n},a[n],n]

运行后得到

a[n] -(1/3)2n(288+121n+21n2+2n3)+2n C[1]+3n C[2]

学生在这个时候会很惊讶:为什么特解-(2n3+21n2+121n+288)2n中包含n的三次方呢?比非齐次项中n的次数高了一。

3.我们再改变一下非齐次项,多一个3的幂次,变为an=5an-1-6an-2+(n2+2)3n,解会如何变化呢?我们在Mathematica中输入

RSolve[{a[n]==5a[n-1]-6a[n-2]+(n^2+2)3^n},a[n],n]

运行后得到

a[n] 1/2 3n(-162+61n-9n2+2n3)+2n C[1]+3n C[2]

特解(2n3-9n2+61n-162)3n中也包含n的三次方,比非齐次项中n的次数高了一。

4.我们继续改变非齐次项,多一个5的幂次,变为an=5an-1-6an-2+(n2+2)5n,解会如何变化呢?我们在Mathematica中输入

RSolve[{a[n]==5a[n-1]-6a[n-2]+(n^2+2)5^n},a[n],n]

运行后得到

a[n] 1/54 52+n(104-39n+9n2)+2n C[1]+3n C[2]

特解(9n2-39n+104)5n是的二次多项式,比非齐次项中n的次数一样。

通过对比上面四个例子,学生们有了一个模糊的认识:如果非齐次项含有特征根的幂次,则特解中n的次数会升高;否者就不会升高。我们的教学目的在很大程度上也就达到了,因为我们成功引起了学生的兴趣,并且让他们自己总结出了规律。

5.我们还可以更进一步,举一个更复杂的例子:an=3an-2-2an-3+(n2+2)。这是一个三阶的线性非齐次递归关系,它的特征方程的三个根是1(二重根)和-2。我们在Mathematica中输入

RSolve[{a[n]==3a[n-2]-2a[n-3]+n^2+2},a[n],n]

运行(并且用命令Simplify[%]简化之后)得到

a[n]80/243+(79n2)/108+(5n3)/27+n4/36+(-2)n C[1]+C[2]+n(-313/162+C[3])

此时特解中包含n的四次方,比非齐次项中n的次数高了二!为什么会这样?学生们发出这样的疑问。这正是一个解释理论的良机。

笔者在课堂上完整地演示过上面的过程,外加2.5中例子的变形,收到了良好的效果,学生的求知欲确实被激发出来了,并且能够自己把规律总结出来。

(三)求解非线性的递归

Mathematica在求解非线性的递归关系方面也有很高的效率。比如我们要求解递归关系an=+1,这是一个分式线性变换,它也可以用特征方程的方法求解,但大部分学生难以掌握其要领。在Mathematica中输入

RSolve[{a[n]==2/a[n-1]+1},a[n],n]

运行后就得到

a[n]-((-1/2)n+4 C[1])/((-1/2)n-2 C[1])

三、总结

借助数学软件强大的符号计算能力,我们可以在极短的时间内向学生展示很多的例子。通过改变递归关系中的参数,学生观察到了解的性状的变化,这个反馈是很及时的(只需几秒钟),因而学生们可以总结出解对参数的依赖关系。结合了现代技术的教学方式,我们可以不强求理论的完备性,也不必拘泥于“定义——定理——例子”的授课模式,而是以启发为主,通过例子向学生展示具体的数学,让学生在观察中总结规律,把数学变成一门“实验科学”。在学生有足够的兴趣的时候,我们就可以讲解现象背后的原理,或者鼓励他们自己去探索背后的原理。

四、致谢

本文受到北京市教委2013北京市共建项目人才培养项目:“数学人才培养模式改革”的支持。

参考文献:

[1]南基洙.组合数学[M],北京:高等教育出版社,2008.

[2]洪维恩.数学运算大师Mathematica 4[M],北京:人民邮电出版社,2002.

作者简介:张汉雄(1983-),男,浙江海宁人,博士,讲师,研究方向:数学物理。

推荐访问:组合 浅谈 数学 教学中 Mathematica

版权所有:天海范文网 2010-2024 未经授权禁止复制或建立镜像[天海范文网]所有资源完全免费共享

Powered by 天海范文网 © All Rights Reserved.。鲁ICP备10209932号