网站大量收购闲置独家精品文档,联系QQ:2885784924

Python编程作图物理仿真项目进阶设计.docx

Python编程作图物理仿真项目进阶设计.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Python编程作图物理仿真项目进阶设计

为让学生通过仿真实践,体验使用计算机编程解决问题的全过程,掌握分支和循环等算法结构,熟练使用Python内置模块和自定义函数,理解模块化编程思想,笔者尝试使用海龟绘图模块编程来设计简单的物理仿真程序。从仿真自由落体运动、平抛运动和斜抛运动,到实现漫天烟花效果,项目难度不断进阶,最后鼓励学有余力的学生自主学习交互式操作和面向对象编程方法,获得更炫目的漫天烟花视觉效果,逐步形成了从易到难的计算思维的培养。

项目一:绘制自由落体运动物体径迹图

仿真技术是利用计算机并通过建立模型进行科学实验的一门多学科综合性技术。人们对现实系统进行简化和模仿,建立相关模型,并对该模型进行试验,从中得到所需的信息,然后帮助人们更好地理解现实世界。

在物理课上,由于实验条件的限制,没有暗室操作频闪照片的实验,只能简单介绍其工作原理,学生缺乏对频闪照片的感性认识,不能准确理解物理过程。教师可以根据自由落体运动规律,使用编程绘图动态模拟运动过程,并获得相应的仿真实验照片,帮助学生理解物理规律。

为了让学生体验使用计算机编程解决问题的全过程,教师可以将实际实验获得的频闪照片和仿真实验绘制的粒子径迹图展示给学生,先让学生分析如何抽象建模和设计算法,再编写代码和调试程序。因为本项目的重点是解析算法的应用,如果学生对绘图模块不是很熟悉,教师可以提供半成品参考代码,对绘图相关语句进行说明,学生只需填写计算坐标的核心代码。

绘制自由落体运动粒子径迹图的算法比较简单,只需设置好初始位置坐标,然后每隔一段时间获取t时刻物体的位置坐标,并在该位置绘制一个白色小球即可。根据自由落体运动规律,小球的x坐标不变,t时间内下落高度为h=0.5*g*t*t。这是典型的解析算法,只要学生熟悉物理公式,就可以直接写出赋值语句。

因为海龟在屏幕中移动的距离是以像素为单位,所以我们需要为下落高度乘以一个放大倍数mult,以获得合适的距离;同时考虑海龟的运动方向与y轴正方向相反,故计算y坐标的解析式为y=-0.5*g*t*t*mult。

为了获得理想的仿真实验效果,还可以引导学生对程序进行多次调试,合理设置时间间隔、放大倍数和重力加速度等参数值。核心代码略。

项目二:绘制平抛运动物体径迹图

在自由落体运动的基础上,可以让学生进一步研究平抛运动。平抛运动分解为水平方向的匀速直线运动和竖直方向的自由落体运动,教师可以引导学生先绘制两个分运动的频闪照片,再处理合运动,通过对比分析3个小球的频闪照片,可以更好地理解物理模型。

有了模拟自由落体运动的程序,模拟平抛运动的代码不难写出,只需在原有代码的基础上增加一个表示水平初速度的变量vx,并在循环体中增加计算水平位移的赋值语句x=vx*t*mult即可。核心代码略。

项目三:绘制斜抛运动物体径迹图

学生掌握仿真平抛运动的方法后,可以进一步扩展到斜抛运动,并使用这个例子来进行自定义函数的教学。

一些教师在教授自定义函数时,把重点放在了语法教学上,笔者认为这是不妥当的。Python的自定义函数语法相当复杂,其形式参数就有必需参数、关键字参数、默认参数、不定长参数等多种类型,更别说各种实参的变异写法和复杂的闭包语法了。这些复杂的语法不是光靠死记硬背就能掌握的,需要多次实践的积累才能逐步理解。题目是做不完的,知识也教不完,“师傅领进门,修行靠个人”,教师主要起到引导学生入门和指明前进方向的作用,具体的知识和技能还是要靠学生自己去领悟和理解。

笔者认为,自定义函数的教学重点应该是让学生理解模块化编程的作用,初步掌握模块化编程的方法,能够根据需要设计自定义函数(包括明确函数功能、设置参数和返回值、给出样例演示等)。其中,设计自定义函数是重中之重,需要反复练习和比较,力求达到意义明确、格式规范、表述简明的目标。

模块化的目的是降低程序复杂度,使程序设计、调试和维护等操作简单化。利用函数,可以实现程序的模块化,使得程序设计更加简单和直观,从而提高程序的易读性和可维护性。那么本案例需要把哪些功能模块化?又如何设计函数呢?

分析斜抛运动粒子径迹图,发现它是由一个个处在特定位置的白色小球排列而成,因此可以把绘制一组白色的斜抛运动粒子作为基本功能模块。那么,要把斜抛运动粒子径迹图绘制出来,需要明确它的哪些属性呢?(其实这里已经暗含面向对象的思想了,只不过时机未到,暂时不点破)

教师可以引导学生从函数功能、函数名、参数表和返回值的角度逐个分析,最后整理出一份完整的函数头说明文档。参考示例略。

项目四:同时绘制多个粒子(单个烟花)斜抛运动径迹图

自定义函数oblique_throw()只能绘制单个粒子斜抛运动径迹图,为了实现漫天烟花的效果,先要学会同时绘制多个粒子斜抛运动径迹图的方法。

在绘制单个粒子径迹图时,只需使用一重循环,计算出粒子在各

文档评论(0)

ZC强 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档