标题 | 当算法思维遇到微分方程 |
范文 | 王磊 程明松
【摘要】学数学的本质在于学习一种思维方法.大学数学课程的学习要更注重学生逻辑思维的培养,应避免学生采用为做题而做题的“题海战术”.本文结合算法思维,尝试从计算机语言的角度梳理高等数学中微分方程这一章的思想框架.以算法思维来求解微分方程的题目,并通过完整的“算法框图”展示算法在哪些问题上有效.学生在初学阶段,可以通过这一过程逐渐加深理解思维的逻辑性并对整个课程中涉及的微分方程的知识图谱有更全面地认识,从中体会算法思维对学习数学类课程的“奇妙功效”. 【关键词】高等数学;算法思维;微分方程;教学研究 一、算法思维与高等数学 随着阿尔法狗2.0完胜柯洁的新闻播出,象征着人类顶级智慧的围棋也成了人工智能的手下败将,从国际象棋到围棋,这中间经历了几十年的时间,甚至我们一度以为围棋对计算机来说“太难了”,却在此时败给了机器人.更耐人寻味的是,完胜柯洁后的阿尔法狗宣布封机、不玩了,就好像说,跟人类下棋毫无挑战一样.很多人不得不承认,当今时代是算法的时代,未来是人工智能的天下,是计算机的天下,借助人工智能已是大势所趋.很多年前,国际象棋的选手们就在接受人工智能算法的“训练”,如今围棋也不可避免地获得了同等的待遇.一个很重要的原因是,算法思维提供了一种可能性,是我们正常的思维逻辑永远不会考虑的一些方面,或者我们已经形成了思维定式,无法从中跳出,而一旦跳出,很可能会别有一番风景. 这种计算机思维或者算法思维能帮助我们学习高等数学吗?或者我们这样去思考,如果计算机都能解决得很好了,我们还要不要学了呢?如果学的话要怎样去学呢?本文将尝试用算法思维来复习或总结微分方程这一章的内容,并希望通过这一过程能减轻初学者的厌学情绪,尤其想到这些内容连只有线性逻辑的计算机都能做到,我们为什么不行?我们还会发现,与算法程序相比,人类自身一些独特的优势仍是计算机目前阶段无法比拟的. 《高等数学》无疑是大学期间最重要的一门基础课,学习起来的滋味一定让刚刚入大学校门的学子们印象深刻.如何才能学好呢?有很多同学上课都会,看书都懂,但其实大多数同学只是停留在了“眼熟”的阶段,距离“理解”还差得很远,而这需要通过做题、测验和考试来增加反馈,大学期间的课程教学与初高中相比,最欠缺的就是这种闭环.我们并不是说大学需要题海战术,但必要的练习量是学好这门课不可或缺的. 二、计算机如何求解微分方程的题目 我们设想一下,如果一道微分方程的题目让计算机程序去求解,它会怎么做呢?在这个过程中我们又可以得到一些什么样的额外收获呢? 我想,“要把大象放冰箱只需要三步”,利用程序解决一道微分方程的题目也只有三步,首先,要“认出来”对象,程序需要把题目所有的“伪装”都去掉,也就是说,先分辨要求解的到底是哪种类型的微分方程,程序做这件事很容易,通常就是把最高阶导数前的系数变为1即可,这就得到了微分方程的标准型;其次,“对症下药”,根据第一步得到的标准型设计求解的具体流程;最后,验证一下得到的解是否满足原方程并输出. 可能有同学会问:真的如此简单吗?其实面对很多问题无从下手往往只是因为第一步没有做,也就是题目可能设计了一些干扰性的偽装让你一下子没有认出来要求解的对象到底是谁.一旦研究对象被识别出来了(实际上需要在这个阶段掌握的标准型也少得可怜),就可以利用相应的求解方法对其进行求解,而每个标准型的具体解法,也没有超过两种的.总的来说,我们需要预置的“求解模块”也是有限的,即使需要把所有的可能模块都算一遍,对当今的计算机来说可能连小菜都算不上一碟吧. 我们来看看具体的算法框图.(如图1) 下面的框图当然并不像数学那样严谨,也不是所有的题目都可以用这个流程求解出来,比如,我们看这样一个例子:y″+y′=1+e-2x,按照计算机的程序可能直接会被当作二阶线性非齐次微分方程来处理,这会让计算变得异常烦琐,计算机可能不在乎,但在考场上的学生可能会受不了.所以剥去外面的伪装,真正辨认出研究对象的本质才是最关键的.如果能看出来这个方程不显含y,直接可以降阶化为一阶的微分方程进行求解,问题就会简化很多.当然,我们还可以利用线性叠加原理将方程的右端分为1和e-2x两部分,分别求两个微分方程的解,再把这两个解叠加起来,这未尝也不是个好的解决思路.无论是哪种策略,这可能是目前为止我们能比计算机做得更好的一点. 三、算法的局限 虽然我们的算法流程不是万能的,但仍然可以从中感受到算法思维或者计算机程序到底是怎么工作的,那就是“化繁为简”.只需要处理几种标准类型的问题就可以了,而其他复杂问题就通过“标准化”的过程化成其中某一种类型.这何尝不是数学追求的境界呢?很多人误会了数学,以为数学太抽象了而觉得烦琐,其实越抽象的才越能说明本质,我们只要弄清楚了最抽象的,其他的知道怎么化标准型就好了. 假设用这套算法流程去求解高等数学里微分方程的问题,再假设已经积累了足够多的求解过程,那这个程序本身还能带给我们什么信息吗?我们还可以把这个框图看作是一个复杂网络, 从这个角度来看, 我们会发现有些节点被大量使用,而有些节点很少触及.那些使用率非常高的节点对应的知识点就是核心内容,比如一阶方程中的分离变量法和常数变异法,二阶方程中的常系数齐次方程的通解形式,这些都是必须要掌握的.而有些知识点涉及的非常少,比如变系数的欧拉方程、非线性的伯努利方程,这些尽管不常见,但这些也都是不能忽略的,只需要记得认出来后如何做相应的变换就可以了. 著名的计算机科学家格里高里·蔡廷(Gregory Chaitin)曾经指出:“计算机不仅是一种极其有用的技术,还是一种具有革命性意义的新数学,它带来了深刻的哲学后果,它揭示了一个新世界的面纱.”科学和数学正在开放、拥抱程序性思维.算法思维,并不是对一些已经设计好的内容进行反复背诵,而是自己对于问题的抽象能力的练习,即从抽象问题到解决实际问题的一个能力.算法思维经常会让人们误解它只会坚持原则,缺少灵活性,从图1上看,算法规则的逻辑性越强就越显得“呆板”,尤其对需要降阶的高阶问题来说,往往要多走几步“冤枉路”了.然而,这不能理解为是算法本身的“僵化”,其实恰恰相反,算法思维不仅能够坚持原则,还可以兼顾更多,这还需要我们为其添加更有效的判断准则.对微分方程这一章内容来说,随着学习的不断深入,题目的不断积累,我们会“自发”地找到一些关键的“局部”特征,这样在每步判断的时候就可以再增加一定的“辅助”信息,帮助我们设计更好的求解方案. 最后,本文还是要强调这里的“算法思维”只是帮助我们学习高等数学的一种辅助手段,通过算法思维来增强自身逻辑性、严谨性的思考.具体的解题过程并不是我们关注的重点,通过做题对所学内容和知识框架有更好的理解才是最终目的.比如,很多求解的方法只对线性微分方程才适用,其中蕴含了什么道理?这里的线性到底指的是什么?能不能和线性叠加原理放到一起去思考?通解的结构为什么要求一种不相关性?微分方程的解为什么可以通过求解对应的代数方程来得到?这些疑问只有都想清楚,才能说明我们对这部分的知识体系有了更高级的认识,而这也是计算机程序和算法思维无法做到的. 【参考文献】 1.金正国,金光日.工科数学分析基础[M].大连:大连理工大学出版社, 2008. 2.楼红卫,微积分进阶[M]. 北京:科学出版社, 2009. 3.李继成, 数学实验[M]. 北京:高等教育出版社, 2014. 4.楼红卫,常微分方程[M].上海:复旦大学出版社,2007. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。