论文部分内容阅读
摘要:电磁场的概念比较抽象,学生往往难以很快把握其本质,建立电磁场的直观概念更加困难,更谈不上深入研究。本论文讨论通过课堂上机编程的方式,采用时域方法对电磁现象进行仿真,通过图像和动画展示基本的电磁场变化过程。学生掌握初步的电磁仿真能力后,即可在课堂上自行调整仿真参数,研究不同参数下电磁场的变化情况。通过这种方法,把学习和研究结合起来,学生在学习的同时,就已经不知不觉地参与到研究中来了,为之后的研究提供宝贵的经验。课堂实践表明,这种教学法效果良好,学生获益匪浅。
关键词:课堂仿真;学习研究一体化;电磁场;教学法
中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2018)09-0156-03
引言
电磁场是电场和磁场的统称,是由带电物体产生的物理场,处于其中的带电物体会受到电磁场的作用力。很多情况下,电磁场是时变场,即随着时间发生变化。根据麦克斯韦方城组,电场的变化会导致磁场的变化,反之亦然,由此产生电磁波,在自由空间传播。电磁场的概念比较抽象,初学者难以很快掌握其物理特性。文献[1]将电磁仿真软件引入课堂教学中,但使用的是已经编译好的商业软件,电磁场的仿真过程是个黑箱,学生难以真正掌握仿真算法。文献[2]提出了Web课堂编程方法,但有多静态、少动态的局限,互动较少。文献[3]改进了《计算方法》的授课方式,建议这门课要与计算机编程相结合,才有较好效果。文献[4]建議《数值分析》强调启发式教学,增强互动。文献[5]设计了教师主页,用于呈现课程内容,也是一种互动方式。文献[6]在数控编程方面,提出综合实训方法。文献[7]对课堂中计算机仿真实践的基本方法和效果进行了研究,文献[8]尝试了学生在课堂上将仿真结果进行展示的教学法。本文提出在课堂上采用计算机编程仿真进行教学的方法,可以使学生快速建立电磁场的直观概念。教师带领学生用Matlab软件对电磁波的传播和散射物理过程进行仿真,同时进行后处理,用图像、动画展示仿真结果。同时,课堂上留出学生自由探索的时间,学生通过更改程序中的参数,研究不同参数对电磁场的影响。学生在不知不觉中就参与到了研究过程中,学习与研究实现了一体化,在时间上没有明显的先后之分。选用合适的计算机语言有助于在有限的课堂时间里尽快成功展示仿真结果。结合课堂上机仿真的特点,选用Matlab作为编程语言。Matlab是一门高级语言,特别适合于快速开发,相比其他语言,代码量可以大大减少,在课堂上用很短的时间编出效率很高的代码。在学习编程的过程中,初学者会遇到很多困难,主要表现在难以把自然语言表达的流程用程序语言实现,难以从数学表达式迅速过渡到程序代码。有些学生可以掌握基本的编程方法,有的拔尖学生也可以设计算法。然而高效、简洁的代码编写技巧,需要长期不断的摸索。通过此过程,学生可迅速掌握基本的编程思想和技巧,并应用到解决具体问题当中。这种教学方法不但有助于使学生体会到数值计算在解决科学问题中的重要性、提升学习热情,也有利于学生对物理现象产生直观认识。
一、课前准备
仿真内容方面,考虑到电磁学这门课程本身就比较抽象,学生又基本没有熟练的编程技巧,因此电磁传输和反射的过程不能太难。一维和二维电磁波的传播是最简单的电磁波传播方式,仿真代码也不需要太多,能够在课堂上机仿真中快速实现。同时,一维和二维中的一些电磁学原理更能反映一些电磁现象的本质。因此选用这两个维度的案例进行教学。在选择编程语言的时候尽量选择简单、高效的语言。Matlab具有语法简单、动态数据类型、内置了大量算法的特点,同时具有良好的后处理功能,仿真结束后可立刻展现图形化结果。Matlab内置了大量常用的数学函数,方便调用。基于以上原因,Matlab有“工程师的语言”的称号。使用Matlab语言可以大大提高开发速度,将注意力集中到要解决的问题上面,而不是编程语言层面。算法方面,采用时域有限差分法(finite-difference time-domain,FDTD)仿真算法。该方法将麦克斯韦方程组进行离散,变成差分方程,通过时间步迭代进行电场和磁场的推进,能够直接反映电磁场的变化。利用Matlab的功能,可以将结果表示为电磁场随时间变化的动画。通过设置制定区域的电磁参数,很容易对电磁散射现象进行仿真。因此,课堂上机仿真选题Matlab语言,仿真方法采用FDTD法,仿真内容为电磁波的一维、二维传播以及相关电磁散射现象。通过这个过程,学生可以掌握Matlab的基本命令和一些高级仿真方法,及微分方程的离散化过程。
二、课堂上机仿真
这个过程可以在上机教室里进行,由教师加以指导。如果学生的条件许可,则可以自带笔记本电脑进行仿真,自己的笔记本电脑使用起来会更顺手。教师从Matlab基本操作开始,逐渐提高深度,将编程的过程及其仿真结果向学生及时展示,同时学生实时察看,并加以模仿。课堂中的仿真公式推导要尽量简洁,从最简单的例子开始,逐渐加深。同时为提高课堂效率,课堂上教师并不对微分方程离散化到差分方程的过程进行详细推导,而是结合离散化网格示意图,引导学生心算,将微分与差分进行对应,将偏导数想象成对应维度的差分。通过这个过程,学生可以充分理解微分方程与差分方程的对应关系,以及在计算机编程中的实现方式。结合FDTD方法的网格,学生即可快速完成麦克斯韦方城组微分形式到Matlab代码的实现,完成数学语言到计算机语言的“翻译”。Matlab语言自身的后处理功能将仿真结果直接显示为电磁场的分布图,可查看电磁场的分布。用Matlab实现了二维情形下电磁波平面波或柱面波的传播过程模拟之后,可以在散射区设置电磁参数,对电磁散射现象进行仿真。如理想导体散射过程中,导体切向电场强度恒为零,因此目标的电场在每次迭代完成后都置零。通过这种方法,实现了导体目标的散射仿真。如对方柱的电磁散射进行仿真时,本质上就是将矩阵的一个子矩阵设为零,这样学生还可以学习Matlab数组索引方法。在模拟无限大空间问题中,需要设置吸收边界条件。二维电磁散射计算区域有四个边界,在仿真过程中,可以逐个设置各个吸收边界,每设置完一个吸收边界条件,就进行一次仿真计算,计算结果展示了设置了吸收边界条件与未设置吸收边界条件的对比情况。电磁波在设置了吸收边界条件的边界表现为外向行波,电磁波向无限远处传播。而没有社会自吸收边界条件的边界,电场恒为零,表现为导体边界,此时电磁波出现反射现象。在课堂编程仿真过程中,同时还根据具体情况讲解一些Matlab编程的技巧以及Matlab软件使用技巧,如快捷键的使用提高编辑速度、Matlab的代码调试方法、二维彩色动图的输出等,便于学生全面提高Matlab的编程能力,提高学生研究的技能。如在讲解动画展示电磁波传播过程中,可以先展示各个时间步逐一仿真的结果,形成许多幅图像,再提示学生,可以将这些图像连续放映,就成为了动画。但是,这种多幅图片连续放映的方式十分笨拙,gif动画是更好的处理方式。此时,问题就来了,如何制作多幅gif动画?接下来,顺利成章地介绍Matlab制作gif动画的方法,学生就会非常容易接受。课堂上机过程中,部分学生可能有能力独立编程,但是,未必能对算法的深刻思想得以领会。此时,就需要教师不断加以讲解。上机仿真中选题和讲解需要遵循下面4个原则: 1.简洁原则。程序代码量尽量要小,尽量用简洁的编程语句完成所需的功能,尽量利用现有的函数。充分利用Matlab向量化编程思想,可以将C语言需要许多行才能实现的功能用短短几行代码就完成。代码量越少,越便于课堂讲授。作者在课堂上机仿真中,20行以内的程序就能够对多个线源产生的柱面电磁波相互干涉的过程进行仿真。
2.扩展原则。程序要由简入繁,刚开始采用非常简单的语句为例,便于学生充分理解Matlab的特点,然后逐渐考虑边界条件、电磁散射等其他因素。举例来说,编写循环语句时,一开始可以只写循环内的语句,只运行一步,单步实现之后,再加上这步代码前后的语句,实现循环。举例来说,作者在讲课过程中,先实现差分方程的迭代,仿真最基本的传播过程,再引入边界条件模拟无限大空间的电磁辐射。
3.整体原则。课堂上编制的都是小程序,因此尽量一个文件就是一个完整的程序,避免调用其他代码。这样做的优点是方便代码维护和管理,避免因为维护过多的文件而花费时间。
4.查看进度。在课堂上机过程中,需要随时查看学生的进度,尽量确保所有同学都与教师同步编程。上机编程过程有很强的连续性,环环相扣,中间任何一个环节没有实现同步,都有可能使得后面的仿真难以跟上。如确有一些学生没有跟上,可适当延缓课堂进程,此时其他同学可研究不同参数设定对仿真结果的影响。
在课堂教学过程中,板书显示最简单的微分方程以及网格示意,投影仪显示Matlab程序编制过程以及仿真结果。在课堂仿真中,每当有成功的仿真结果,就立刻展示不同参数的仿真结果,同时鼓励学生进行其他尝试,如研究相距半个波长、一个波长的导线辐射的结果、两个导线相位相差0度、180度的辐射现象。在这个过程中,学生其实已经是研究者的角色了,研究各种条件下可能会产生的电磁现象,并通过仿真验证,而不是单向接受信息的学生。
三、课后学生练习和教学效果考核
本文提出的教学法在四年级本科生课程《飞行器隐身技术基础》安排了4个学时进行了实验教学。此教学环节让学生直观感受到电磁波的传播、干涉过程,同时学生直接参与到研究当中,对电磁行为有更深刻的理解和认识。同时,通过引导学生完整经历“微分方程—差分方程—Matlab程序代码”的全过程,使学生对通过计算机程序研究场的问题有了直观的认识。课堂编程仿真实践环节结束后,安排大作业,学生自己选定主题进行编程,实现传播、散射等各种电磁行为。每位同学将仿真结果整理成学术论文,向所有同学展示仿真结果。教师对仿真结果进行相应的点评和指导,评选出优秀者,在课程成绩中给予分数鼓励。通过课后练习,学生能够充分领会科学研究的思想,同时也练习了学术论文撰写基本技巧。研究和学习紧密结合,有助于学生在以后开展研究工作時,很快找到方法和门路。
四、结论
本文研究了基于Matlab语言进行电磁场课堂上机仿真,并在课堂中进行了实践,主要结论如下:
1.学生能够快速掌握编程技巧。Matlab语言编程效率高、代码简洁,学生可以快速掌握,将更多的注意力集中在算法上面。仿真程序需要运用循环语句,模拟时间迭代的效果。上机仿真对这些编程要素都有涉及,便于学生学习。
2.学生可以对电磁现象有直观的认识。电磁场传播和散射的动画显示能够展示电磁波变化的动态过程,使学生充分领会电磁行为特点。
3.在课堂上实现学习研究一体化。在课堂上机仿真过程中,学生并不只是单向地接受信息,而是自始至终都参与其中。学生掌握自己编制的代码,随时可以根据自己的意愿对代码进行修改,观察自己感兴趣的电磁现象,这个过程本质上就已经是研究活动了。
参考文献:
[1]高山山.浅谈电磁仿真软件在电磁场与微波技术教学中的作用[J].教育教学论坛,2015,(25):116-117.
[2]张宏升.Web编程课堂教学互动存在问题及解决策略[J].电子科技,2011,24(5):122-124.
[3]开依沙尔·热合曼.关于《计算方法》课程教学的探索[J].教育教学论坛,2015,(25):163-164.
[4]陈付广.《数值分析》课程教学改革研究[J].教育教学论坛,2015,(25):124-125.
[5]姬金祖.教师个人主页在教育教学工作中的应用[J].教育教学论坛,2012,(36):157-158.
[6]孙静.项目教学法在数控编程综合实训中的应用[J].高教学刊,2015,(12):72-73.
[7]姬金祖.课堂上机编程仿真实践教学方法和效果[J].高教学刊,2015,(16):154-155.
[8]姬金祖.电磁散射仿真课堂展示教学探索[J].教育教学论坛,2015,(5):103-104.
关键词:课堂仿真;学习研究一体化;电磁场;教学法
中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2018)09-0156-03
引言
电磁场是电场和磁场的统称,是由带电物体产生的物理场,处于其中的带电物体会受到电磁场的作用力。很多情况下,电磁场是时变场,即随着时间发生变化。根据麦克斯韦方城组,电场的变化会导致磁场的变化,反之亦然,由此产生电磁波,在自由空间传播。电磁场的概念比较抽象,初学者难以很快掌握其物理特性。文献[1]将电磁仿真软件引入课堂教学中,但使用的是已经编译好的商业软件,电磁场的仿真过程是个黑箱,学生难以真正掌握仿真算法。文献[2]提出了Web课堂编程方法,但有多静态、少动态的局限,互动较少。文献[3]改进了《计算方法》的授课方式,建议这门课要与计算机编程相结合,才有较好效果。文献[4]建議《数值分析》强调启发式教学,增强互动。文献[5]设计了教师主页,用于呈现课程内容,也是一种互动方式。文献[6]在数控编程方面,提出综合实训方法。文献[7]对课堂中计算机仿真实践的基本方法和效果进行了研究,文献[8]尝试了学生在课堂上将仿真结果进行展示的教学法。本文提出在课堂上采用计算机编程仿真进行教学的方法,可以使学生快速建立电磁场的直观概念。教师带领学生用Matlab软件对电磁波的传播和散射物理过程进行仿真,同时进行后处理,用图像、动画展示仿真结果。同时,课堂上留出学生自由探索的时间,学生通过更改程序中的参数,研究不同参数对电磁场的影响。学生在不知不觉中就参与到了研究过程中,学习与研究实现了一体化,在时间上没有明显的先后之分。选用合适的计算机语言有助于在有限的课堂时间里尽快成功展示仿真结果。结合课堂上机仿真的特点,选用Matlab作为编程语言。Matlab是一门高级语言,特别适合于快速开发,相比其他语言,代码量可以大大减少,在课堂上用很短的时间编出效率很高的代码。在学习编程的过程中,初学者会遇到很多困难,主要表现在难以把自然语言表达的流程用程序语言实现,难以从数学表达式迅速过渡到程序代码。有些学生可以掌握基本的编程方法,有的拔尖学生也可以设计算法。然而高效、简洁的代码编写技巧,需要长期不断的摸索。通过此过程,学生可迅速掌握基本的编程思想和技巧,并应用到解决具体问题当中。这种教学方法不但有助于使学生体会到数值计算在解决科学问题中的重要性、提升学习热情,也有利于学生对物理现象产生直观认识。
一、课前准备
仿真内容方面,考虑到电磁学这门课程本身就比较抽象,学生又基本没有熟练的编程技巧,因此电磁传输和反射的过程不能太难。一维和二维电磁波的传播是最简单的电磁波传播方式,仿真代码也不需要太多,能够在课堂上机仿真中快速实现。同时,一维和二维中的一些电磁学原理更能反映一些电磁现象的本质。因此选用这两个维度的案例进行教学。在选择编程语言的时候尽量选择简单、高效的语言。Matlab具有语法简单、动态数据类型、内置了大量算法的特点,同时具有良好的后处理功能,仿真结束后可立刻展现图形化结果。Matlab内置了大量常用的数学函数,方便调用。基于以上原因,Matlab有“工程师的语言”的称号。使用Matlab语言可以大大提高开发速度,将注意力集中到要解决的问题上面,而不是编程语言层面。算法方面,采用时域有限差分法(finite-difference time-domain,FDTD)仿真算法。该方法将麦克斯韦方程组进行离散,变成差分方程,通过时间步迭代进行电场和磁场的推进,能够直接反映电磁场的变化。利用Matlab的功能,可以将结果表示为电磁场随时间变化的动画。通过设置制定区域的电磁参数,很容易对电磁散射现象进行仿真。因此,课堂上机仿真选题Matlab语言,仿真方法采用FDTD法,仿真内容为电磁波的一维、二维传播以及相关电磁散射现象。通过这个过程,学生可以掌握Matlab的基本命令和一些高级仿真方法,及微分方程的离散化过程。
二、课堂上机仿真
这个过程可以在上机教室里进行,由教师加以指导。如果学生的条件许可,则可以自带笔记本电脑进行仿真,自己的笔记本电脑使用起来会更顺手。教师从Matlab基本操作开始,逐渐提高深度,将编程的过程及其仿真结果向学生及时展示,同时学生实时察看,并加以模仿。课堂中的仿真公式推导要尽量简洁,从最简单的例子开始,逐渐加深。同时为提高课堂效率,课堂上教师并不对微分方程离散化到差分方程的过程进行详细推导,而是结合离散化网格示意图,引导学生心算,将微分与差分进行对应,将偏导数想象成对应维度的差分。通过这个过程,学生可以充分理解微分方程与差分方程的对应关系,以及在计算机编程中的实现方式。结合FDTD方法的网格,学生即可快速完成麦克斯韦方城组微分形式到Matlab代码的实现,完成数学语言到计算机语言的“翻译”。Matlab语言自身的后处理功能将仿真结果直接显示为电磁场的分布图,可查看电磁场的分布。用Matlab实现了二维情形下电磁波平面波或柱面波的传播过程模拟之后,可以在散射区设置电磁参数,对电磁散射现象进行仿真。如理想导体散射过程中,导体切向电场强度恒为零,因此目标的电场在每次迭代完成后都置零。通过这种方法,实现了导体目标的散射仿真。如对方柱的电磁散射进行仿真时,本质上就是将矩阵的一个子矩阵设为零,这样学生还可以学习Matlab数组索引方法。在模拟无限大空间问题中,需要设置吸收边界条件。二维电磁散射计算区域有四个边界,在仿真过程中,可以逐个设置各个吸收边界,每设置完一个吸收边界条件,就进行一次仿真计算,计算结果展示了设置了吸收边界条件与未设置吸收边界条件的对比情况。电磁波在设置了吸收边界条件的边界表现为外向行波,电磁波向无限远处传播。而没有社会自吸收边界条件的边界,电场恒为零,表现为导体边界,此时电磁波出现反射现象。在课堂编程仿真过程中,同时还根据具体情况讲解一些Matlab编程的技巧以及Matlab软件使用技巧,如快捷键的使用提高编辑速度、Matlab的代码调试方法、二维彩色动图的输出等,便于学生全面提高Matlab的编程能力,提高学生研究的技能。如在讲解动画展示电磁波传播过程中,可以先展示各个时间步逐一仿真的结果,形成许多幅图像,再提示学生,可以将这些图像连续放映,就成为了动画。但是,这种多幅图片连续放映的方式十分笨拙,gif动画是更好的处理方式。此时,问题就来了,如何制作多幅gif动画?接下来,顺利成章地介绍Matlab制作gif动画的方法,学生就会非常容易接受。课堂上机过程中,部分学生可能有能力独立编程,但是,未必能对算法的深刻思想得以领会。此时,就需要教师不断加以讲解。上机仿真中选题和讲解需要遵循下面4个原则: 1.简洁原则。程序代码量尽量要小,尽量用简洁的编程语句完成所需的功能,尽量利用现有的函数。充分利用Matlab向量化编程思想,可以将C语言需要许多行才能实现的功能用短短几行代码就完成。代码量越少,越便于课堂讲授。作者在课堂上机仿真中,20行以内的程序就能够对多个线源产生的柱面电磁波相互干涉的过程进行仿真。
2.扩展原则。程序要由简入繁,刚开始采用非常简单的语句为例,便于学生充分理解Matlab的特点,然后逐渐考虑边界条件、电磁散射等其他因素。举例来说,编写循环语句时,一开始可以只写循环内的语句,只运行一步,单步实现之后,再加上这步代码前后的语句,实现循环。举例来说,作者在讲课过程中,先实现差分方程的迭代,仿真最基本的传播过程,再引入边界条件模拟无限大空间的电磁辐射。
3.整体原则。课堂上编制的都是小程序,因此尽量一个文件就是一个完整的程序,避免调用其他代码。这样做的优点是方便代码维护和管理,避免因为维护过多的文件而花费时间。
4.查看进度。在课堂上机过程中,需要随时查看学生的进度,尽量确保所有同学都与教师同步编程。上机编程过程有很强的连续性,环环相扣,中间任何一个环节没有实现同步,都有可能使得后面的仿真难以跟上。如确有一些学生没有跟上,可适当延缓课堂进程,此时其他同学可研究不同参数设定对仿真结果的影响。
在课堂教学过程中,板书显示最简单的微分方程以及网格示意,投影仪显示Matlab程序编制过程以及仿真结果。在课堂仿真中,每当有成功的仿真结果,就立刻展示不同参数的仿真结果,同时鼓励学生进行其他尝试,如研究相距半个波长、一个波长的导线辐射的结果、两个导线相位相差0度、180度的辐射现象。在这个过程中,学生其实已经是研究者的角色了,研究各种条件下可能会产生的电磁现象,并通过仿真验证,而不是单向接受信息的学生。
三、课后学生练习和教学效果考核
本文提出的教学法在四年级本科生课程《飞行器隐身技术基础》安排了4个学时进行了实验教学。此教学环节让学生直观感受到电磁波的传播、干涉过程,同时学生直接参与到研究当中,对电磁行为有更深刻的理解和认识。同时,通过引导学生完整经历“微分方程—差分方程—Matlab程序代码”的全过程,使学生对通过计算机程序研究场的问题有了直观的认识。课堂编程仿真实践环节结束后,安排大作业,学生自己选定主题进行编程,实现传播、散射等各种电磁行为。每位同学将仿真结果整理成学术论文,向所有同学展示仿真结果。教师对仿真结果进行相应的点评和指导,评选出优秀者,在课程成绩中给予分数鼓励。通过课后练习,学生能够充分领会科学研究的思想,同时也练习了学术论文撰写基本技巧。研究和学习紧密结合,有助于学生在以后开展研究工作時,很快找到方法和门路。
四、结论
本文研究了基于Matlab语言进行电磁场课堂上机仿真,并在课堂中进行了实践,主要结论如下:
1.学生能够快速掌握编程技巧。Matlab语言编程效率高、代码简洁,学生可以快速掌握,将更多的注意力集中在算法上面。仿真程序需要运用循环语句,模拟时间迭代的效果。上机仿真对这些编程要素都有涉及,便于学生学习。
2.学生可以对电磁现象有直观的认识。电磁场传播和散射的动画显示能够展示电磁波变化的动态过程,使学生充分领会电磁行为特点。
3.在课堂上实现学习研究一体化。在课堂上机仿真过程中,学生并不只是单向地接受信息,而是自始至终都参与其中。学生掌握自己编制的代码,随时可以根据自己的意愿对代码进行修改,观察自己感兴趣的电磁现象,这个过程本质上就已经是研究活动了。
参考文献:
[1]高山山.浅谈电磁仿真软件在电磁场与微波技术教学中的作用[J].教育教学论坛,2015,(25):116-117.
[2]张宏升.Web编程课堂教学互动存在问题及解决策略[J].电子科技,2011,24(5):122-124.
[3]开依沙尔·热合曼.关于《计算方法》课程教学的探索[J].教育教学论坛,2015,(25):163-164.
[4]陈付广.《数值分析》课程教学改革研究[J].教育教学论坛,2015,(25):124-125.
[5]姬金祖.教师个人主页在教育教学工作中的应用[J].教育教学论坛,2012,(36):157-158.
[6]孙静.项目教学法在数控编程综合实训中的应用[J].高教学刊,2015,(12):72-73.
[7]姬金祖.课堂上机编程仿真实践教学方法和效果[J].高教学刊,2015,(16):154-155.
[8]姬金祖.电磁散射仿真课堂展示教学探索[J].教育教学论坛,2015,(5):103-104.