您好, 访客   登录/注册

偏微分方程数值解实践教学中C++语言算法的应用研究

来源:用户上传      作者:

  摘 要:在我国教学体制逐步改革的背景下,越来越多的人关注我国的大学教育。偏微分方程数值解作为一门专业基础课,其数值算法的编程实践教学也受到了广泛关注。本文采用C++语言对偏微分方程数值算法的实践教学应用策略进行分析,首先介绍了偏微分方程数值解的应用背景;其次概括了该课程传统实践教学模式存在的瑕疵;最后从三个方面描述了采用C++语言在偏微分数值算法实践教学中的优点,其主要优点在于C++语言在偏微分方程数值解算法实现中较Matlab语言具有较高运算效率和算法精度的可控性。
  关键词:偏微分方程数值解 C++语言 算法实践教学
  中图分类号:G642 文献标识码:A 文章编号:1674-098X(2019)03(c)-0194-02
  偏微分方程数值解[1]是信息与计算科学专业(信科专业)的一门专业基础课,该课程是结合数值计算方法和计算机编程对偏微分方程求近似解。偏微分方程数值解主要介绍了求解偏微分方程数值计算的方法[2],分析了有限差分法的性质、有限元离散方法的性质以及其他一些性质,讨论了收敛性、稳定性、误差估计等问题,提供了不同深度的算例。
  在对算例进行编程时,常用的编程语言有C++语言和Matlab语言[3]。Matlab中的内置算法,因其简单,可以直接调用受到了很多学生的青睐;但在一些复杂的算例求解中,C++的循环运算效率和算法精度相对较高,更适合用于对偏微分方程数值算法实践教学[4]。
  1 编程语言再偏微分方程数值解传统实践教学模式中应用背景
  从课程的结构和内容来看,偏微分方程数值解涉及的计算问题多而复杂,大多数都和生物、化学、物理等问题息息相关。近年来数值求解的规模越来越大,已逐步渗透到物理、化学、生物等现代科学与工程的各领域中。在对具体算例进行求解时,会借助计算机编程软件,则C++和Matlab的应用也越来越广泛,Matlab的内置算法,C++强大的编程语言,都具有很广泛的实际应用背景,且能结合该课程中的理论、方法处理某个特定领域中产生的实际课题。
  在传统实验教学过程中,由于Matlab有很多的内置算法,在编程时只需直接调用,教师为了学生能更熟悉算例的分析求解,使用Matlab进行实践教学。随着算例难度的加深,Matlab的内置算法无法修改,在对复杂问题的求解时,有时会出现精度很低的问题。C++的编程语言十分强大,同时也能较使用Matlab更好锻炼学生的计算机动手能力,但需要自己设计算法,对学生的编程能力要求很高,部分学生无法达到要求。由于C++语言较Matlab语言本身就有一定的难度,在实践教学中的难度也随之增加,故而教师就放弃采用C++语言进行实践教学。
  2 采用C++语言进行实践教学
  2.1 加强基础理论与实践的结合
  目前,国内大多数偏微分方程数值解课程的教材都是首先概括关于偏微分方程的一些基本概念;其次介绍有限差分方法的一些相关概念,以及双曲型方程、抛物型方程、椭圆型方程的差分方法;最后介绍有限元离散方法和其他一些课题。传统教学模式中,教师每周上完理论课,布置课后作业,学生独立上机完成。但部分学生缺乏自主学习能力,大大降低了学习效果。现在00后已步入高校,呆板的传统教学模式不再适用,纯理论分析让其感到枯燥乏味,从而失去对学习的兴趣。然而,师生互动会调动课堂气氛,吸引学生对学习的兴趣。故采用C++辅助课堂实践教学,适当的修改教学大纲,增设实验课,培养学生对编程的兴趣。从一些简单的算例着手,逐步增加难度,以此来巩固理论知识,加强学生的动手能力,增强学生的自信心。
  2.2 加强C++语言在偏微分方程数值求解过程中的应用
  引入C++语言的课堂不再单调,学生面对的不再是枯燥的定理证明、公式推导,而是数值求解方法、计算机编程过程以及结果的展示。教师在授课时适当地插入一些简单的数值算例,引发学生的思考,激起学生对学习的兴趣。
  2.3 采用C++语言的优点
  随着科技的发展,现在计算机软件越来越多,对于信科专业的学生而言,主要用C++语言和Matlab语言对数值算法进行编程,而采用C++语言相对于Matlab语言的主要优点有:
  (1)运算效率。Matlab语言在循环运算中的效率相对较低。
  (2)算法精度的可控性。Matlab语言中的内置算法固定无法修改,有时对复杂问题的求解时会出现精度很低的问题;而C++语言是自己定义变量,对精度有一定的可控性。
  (3)Matlab语言中有很多内置算法,在对算法进行编程时可直接调用;C++语言则需要自己设计算法,进行调试编译。在多维问题中,Matlab語言中的内置算法会出现一些弊端,但C++功能比较强大,有灵活的编程语言。
  相应地,在运用C++语言编写程序时,对学生也有一定的要求:
  (1)要具备扎实的数学基本功,掌握计算机的一些相关基础理论和基本知识;
  (2)能熟练使用计算机,掌握一些常见的算法分析,具备超强的编程能力;
  (3)熟练使用偏微分方程数值解中的理论、方法以及技能处理某个特定领域中产生的实际课题;
  (4)了解信息科学与计算科学的相关理论,对技术及应用的发展也要做一定的了解;
  (5)具备查询文献检索以及资料的技能,有一定的科研能力和软件开发能力。
  因此,采用C++语言对偏微分方程数值算法进行实践教学,先对算例进行分析,再编写程序,不但可以增强学生的专业知识,还可以提升学生的C++编程能力。
  3 结语
  在实践教学中,由于Matlab语言在循环运算中的效率比较低,其内置算法无法修改,在对复杂问题的求解时易出现精度很低的问题;但C++语言功能比较强大,有灵活的编程语言,尤其在多维问题中优势明显。选用C++语言对偏微分方程数值解进行实践教学,这对传统教学模式的改变有一定的促进作用。加强C++语言在偏微分方程数值求解过程中的应用,对教师的“教”和学生的“学”都有一定的帮助,且为学生日后熟练使用计算机解决相关问题打下良好基础。
  参考文献
  [1] 陆金甫,关治.偏微分方程数值解法[M].北京:清华大学出版社,2004.
  [2] 常峰.有关孤立波的几类偏微分方程的数值解法[D].山东大学,2011.
  [3] 陈荣荣.C++与Matlab的基本语法比较[J].电脑编程技巧与维护, 2011(14):32-34.
  [4] 徐亚博.球面上偏微分方程的数值求解研究[D].中北大学,2005.
  [5] 杨素香.几类偏微分方程的数值分析[D].山东师范大学,2005.
  [6] 王海林,徐珊,宋论兵,等.偏微分方程数值解法的研究[J].赤峰学院学报:自然科学版,2012,28(18):1-2.
  [7] 吴强,朱晓临,王寿城.浅谈“偏微分方程数值解”教学中的实践性教学环节[J].大学数学,2014,30(S1):5-8.
  [8] 江山,凌智,孙美玲.强化实践与应用数值分析创新型教学的探究[J].高教学刊,2015(3):17-18,20.
  [9] 邹永魁.偏微分方程数值解课程的思索[J].科技信息,2012(9):200-201.
转载注明来源:https://www.xzbu.com/1/view-14921250.htm