Python编程与3D物理学仿真(视频版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

写作目的

(1)Python是一个非常简单且好用的编程工具

首先说它简单。Python不像其他语言那样有着复杂的语法,我们不用提前定义变量的类型,也不用了解什么是“指针”和“中断”,只需要按照书上的公式和解题过程输入代码,程序就写完了。因此,Python才能真正被称为演算式程序语言。当然Python也有一定的语法规范,但并不复杂。

其次说它好用。什么是好用?我们能用它快速完成一个任务,它就是好用。我们今天能用它来做一个物理的模拟程序,明天能用它在游戏《我的世界》(Minecraft)中批量创造建筑,后天能用它开发一套语音识别程序或进行网络数据抓取等,它就是好用。大家注意,我们是“一”天用它完成一个不同的任务,而不是用多个工作日。可以利用Python的简短代码完成其他编程语言用庞杂的代码才能完成的工作,而且Python是免费、开源的,我们可以从各种途径获得各种资源,加快和优化项目的进程。

既然Python是那么好用的一个工具(这里不再称它为编程语言),那么我们越早掌握越好。越早掌握这个工具,就能越早进行科技创新,就能越早用它辅助我们的学业或完成我们的项目。

先谈一下科技创新。举个例子,仅从Python本身来讲,比如,中学阶段你就掌握了这个工具,那么从踏入大学校门的第一天起,你就可以用Python写论文、参加各种科技创新比赛,这最终将有助于你择业。

再聊一下Python对学业的辅助作用。Python是一种演算式编程工具,它特别适合理论计算类例题或习题的求解。我曾经看过外国中学生用Python对数学计算题进行演算的实例。中小学里的数学、物理及化学等课程,凡是有计算题的地方都可以用Python进行计算或验算。

大学里的课程理论更深,如果能用Python,很多问题都能迎刃而解。

(2)青少年如何学习Python

知识的学习有一个过程:看到了,你才会相信;听懂了,你才会理解;做过了,你才会记住。对Python的学习也是这样,要学好Python,我们就得做项目。也就是说,我们必须采用基于项目的学习方式,通过做项目的过程来融会贯通地学习Python的基础知识。通过编写完整的项目程序,才能真正系统掌握Python编程知识。

对广大青少年读者来讲,以什么项目来学习Python才是合适的?这个项目必须和青少年读者的知识层次和知识结构相对应,不要“超纲”。很多编程培训机构的老师们都有感觉,目前开展青少年编程培训最大的难度不在于编程语言,而在于学习者对编程项目所需专业知识的掌握程度。比如,在给小学生讲解重力作用下小球桌面反弹游戏编程时,所需要的Python知识点小学生们几分钟就可以听懂,可是却需要花费半天的时间来给小学生讲解重力加速度和自由落体等方面的知识。

所以,无论你是中小学生,还是大学生,或者是已经参加工作的青年朋友们,最好能够结合自己的课程或者业务来学习Python。

(3)Python学习和物理学习相结合的重要性

综上所述,我想出了Python编程和物理学习相结合的项目。物理学科的难度系数很大,很多知识点比较晦涩,仅凭书中的描述,学生很难建立正确的物理场景,更别提能正确理解概念和熟练掌握应用了。为能将复杂的物理问题的动态过程展现得具体而生动,使编程过程具有趣味性,我们采用3D可视化编程,对物理过程进行3D动态仿真。因此,本书也就诞生了。

为最大限度地节省读者的学习时间,提高学习效率,我们按照物理力学知识点的顺序同步编写本书,根据知识点设计对应的编程项目。

物理学科是一个基于实验的学科,学习者可通过物理的实物实验培养对外界知识不断探索的兴趣。在课堂实验之外,学习者如何对实验过程进行复习、概括及拓展,往往受制于实验硬件条件的限制。硬件条件的限制使学习者只能停止对物理知识的探究,更无法形成系统的物理自主学习能力。而物理新课标核心素养里明确要求要培养学生的物理探究能力和自主学习能力。

现在利用Python就可以完全解决这个问题。我们可以利用Python完成物理的虚拟实验,甚至可以完成实物无法实现的实验。比如卫星的椭圆轨道运行及卫星的变轨问题,这个实验是无法做实物实验的,但可通过Python将卫星运动的动力学过程描述出来,当我们通过程序改变速度实现卫星椭圆轨道的变大或变小时,学习者才能真正理解实际的卫星在飞天过程中通过控制发动机的点火来增大或减小推进力的意义所在。

利用Python可以建立一个物理实验项目,通过改变程序中某个或某些变量的数值,就可以轻松改变实验条件,进而适当拓展或者无限拓展实验条件。我们可以创建自己的实验条件,也可以创建自己的实验,从而将很多实物无法实现的过程(概念)采用3D动态仿真的过程展现出来。

本书特色

本书具有以下特点。

(1)本书不是一本Python语言的工具书,而是一本讲解如何利用Python建立3D物理虚拟实验,从而学习物理的书。全书没有安排专门的章节讲解Python的基础知识,而是直接带领读者按照项目实例的方式进行编程和学习。读者可以完全没有Python基础,只需要认真地跟着本书进行实例的编程操作,通过编程实践感悟认知规律,在做过一两个实例之后,相信大家在加深对物理知识掌握的基础上自然就学会了Python的编程基础。

(2)按物理力学知识点脉络安排章节,读者可以根据物理知识结构同步系统地学习。本书强调专业知识的重要性,而不是过分强调软件操作,因为本书的主要目的是掌握物理学知识,而Python只是协助学习物理知识的软件工具。

(3)以步骤拆解的方式讲述项目的编程过程,每个实例都分为“加载3D模块”到“定义动画循环”等不同的编程操作步骤,使读者熟练掌握使用Python软件进行3D物理学项目开发的清晰条理。

主要内容

本书将Python编程和物理力学知识同步结合,通过编程将物理概念和物理过程进行3D可视化展现,在3D场景下加深对物理知识的理解和掌握,从而培养物理学习兴趣,提高物理自主学习和科学探究能力。

本书共分10章,具体内容如下。

第1章介绍使用Python进行3D物理学编程的基础知识。通过简单的实例介绍了利用VPython模块进行基本的3D形状创建的方法,以及如何控制位置移动和3D动画的生成,最后通过匀速直线运动完整的实例介绍利用Python进行3D物理学仿真的基本步骤。

第2章介绍运动的描述。通过实例首先介绍位置与参考系的概念,进而提出位移-时间关系曲线,在位移曲线的基础上深度理解速度和加速度的基本概念。

第3章介绍匀变速直线运动。首先仿真了匀变速直线运动的三维动态过程和位移、速度及加速度随着时间的变化关系,然后对多阶段变速过程进行探讨,最后对自由落体和竖直上抛这两类特殊匀变速直线运动进行分析。

第4章介绍相互作用——力。首先对弹簧的弹力和长度之间的关系进行动态仿真,然后对静摩擦力向动摩擦力的转换过程进行了深入研究,最后对力的合成与分解,特别是重力在斜面上的分解过程进行详细的仿真分析。

第5章介绍运动和力的关系。首先对外力作用下的匀变速直线运动的加速度和力、质量的关系进行深入探究,然后对具有摩擦力的斜面运动进行了三维仿真,最后对经典的伽利略斜面运动实例进行了3D仿真再现。

第6章介绍抛体运动。首先介绍外力对直线运动状态的改变效果,然后对重力作用下的平抛运动和一般抛体运动进行了详细的3D动态仿真与分析。

第7章介绍圆周运动。首先对圆周运动进行基本的仿真实现,然后对向心加速度和向心力进行详细的模拟仿真,进而对向心力改变时的切线运动和离心运动进行动态仿真,最后对圆锥摆问题进行3D物理学仿真分析。

第8章介绍万有引力及宇宙航行。首先对物体间的万有引力进行简单的仿真,然后仿真在万有引力作用下地球卫星的椭圆运动,进而计算轨道周期等参数,对卫星变轨问题进行深入的仿真探讨,最后对相对论尺度改变问题进行简单的仿真分析。

第9章介绍机械能守恒定律。首先对做功和动能定理进行了仿真,然后对重力势能和弹性势能及机械能守恒进行了详细的仿真分析,最后以单摆运动为例仿真分析机械能守恒条件下的能量相互转化过程。

第10章介绍动量守恒定律。首先对动量和动量定理的基本概念进行了仿真,然后分别对小球对心碰撞时的弹性碰撞和非弹性碰撞进行了详尽分析,最后对单摆碰撞时的弹性碰撞过程进行了3D动态仿真与分析。

本书配有全套视频讲解,所有的代码均提供源代码下载服务。另外,本书设立了两个读者QQ群(一群:877159829;二群:197868820),用于解答读者的疑问,便于大家交流。

另外,我在中国大学MOOC上已经开设了独立SPOC课程,需要此课程学习密码的读者请和我联系。

软件版本及安装说明:

(1)Python版本:本书采用Python 3.9.1编写,读者可以直接从Python官网下载Python安装文件。需要注意的是,在安装Python时必须选择“Add Python 3.9 to PATH”进行Python环境变量的设置。

(2)VPython版本:本书采用VPython 7.0版本,该版本的安装文件不能直接下载,只能通过pip命令在线下载和安装,即在命令提示符窗口输入“pip install vpython”便可以完成VPython的安装。如果安装不成功,可能是因为pip的版本过低,需要输入“pip install--upgrade pip”完成相应的升级。

致谢

首先感谢我的家人,没有他们对我的支持与鼓励、关心与照顾,本书不能顺利成稿。

其次要感谢笔者近年来所有遇到过的大/中/小学物理教师和信息技术教师,没有他们一线的教学需求和课题研究需求分析,本书无法成稿。

最后要感谢电子工业出版社的编辑李利健和她的同事们,没有出版社的大力支持,没有李编辑和其同事们的辛苦付出、耐心指导,本书无法顺利出版。

由于作者水平有限,书中难免有错误和不当之处,敬请读者批评、指正。

张继春

读者服务

微信扫码回复:40928

• 获取本书配套资源

• 获取作者提供的各种共享文档、线上直播、技术分享等免费资源

• 加入本书读者交流群,与作者互动

• 获取博文视点学院在线课程、电子书20元代金券