索引 / 001 ZH-CN
A Student's Guide to Python for Physical Modeling(物理建模 Python 学生指南) cover

物理学

物理学

A Student's Guide to Python for Physical Modeling(物理建模 Python 学生指南)

Jesse M. Kinder; Philip Nelson

英文原名: A Student's Guide to Python for Physical Modeling

一本简短实用的入门书,教物理和工程专业学生用 Python 完成课程和实验中遇到的计算任务。本书不要求编程经验,通过 NumPy、SciPy 和 Matplotlib 这套科学计算工具讲授语言,并借助例题和小项目逐步过渡到模拟、数据分析和可视化。

需要的基础: 微积分和物理入门;不要求事先具备编程经验。

难度等级
入门
学术层次
本科
pythoncomputational physicsnumerical methodsdata analysisprimer

01 / 导读

导读

引用

Kinder, J. M., & Nelson, P. (2021). A Student's Guide to Python for Physical Modeling (2nd ed.). Princeton University Press.

章节概要

第二版全书240页:十章约155页,另有七个附录和一篇简短的前言“Let's Go”。十章由讲授章节和三个“计算机实验”章节交替构成,后者把新学的工具应用到建模问题上。据前言,标有“Track 2”的小节和脚注较为进阶,初读时可以跳过。

第1章:Getting Started with Python(Python入门)

全书从算法思维、程序状态的概念以及赋值语句a = a + 1的含义讲起,接着是在IPython控制台中启动Python、阅读错误信息、寻求帮助和记录日志。本章最后讲模块(import、NumPy和PyPlot)和Python表达式:数字、算术、预定义函数、变量名和函数。

第2章:Organizing Data(组织数据)

对象与方法,然后是列表、元组和NumPy数组:创建与填充、拼接、索引、切片、展平和重塑。本章也讲字符串及其格式化。

第3章:Structure and Control(结构与控制)

循环(for和while)、向量化的数组运算、矩阵运算和数组约简,然后是脚本和编辑器,其中有关于注释、命名参数和单位的良好实践。最后是分支(if语句、浮点数相等的检验)和嵌套。

第4章:Data In, Results Out(数据输入,结果输出)

导入数据、把数据导出到脚本和文件,以及数据可视化:plot命令、对数坐标轴、修饰和替换曲线、误差棒、三维图、多图、子图和保存图形。

第5章:First Computer Lab(第一次计算机实验)

围绕两个例子的简短实验章节:HIV模型和细菌模型,每个例子都有“探索模型”和“拟合实验数据”两步。

第6章:Random Number Generation and Numerical Methods(随机数生成与数值方法)

篇幅较长的一章(28页)。内容包括编写函数、随机数与模拟(抛硬币、轨迹)、直方图和条形图、等高线图、曲面图和热图、非线性方程的数值解、线性方程组、数值积分和微分方程的数值解,最后是矢量场和流线。

第7章:Second Computer Lab(第二次计算机实验)

生成并绘制轨迹、绘制位移分布,以及稀有事件(泊松分布和等待时间)。

第8章:Images and Animation(图像与动画)

把图像当作NumPy数组并加以处理,把数据显示为图像,以及创建和保存动画。

第9章:Third Computer Lab(第三次计算机实验)

图像处理练习:卷积(平均与高斯平滑)、图像去噪和突出特征。

第10章:Advanced Techniques(高级技巧)

字典、特殊函数参数、列表推导式和生成器;数据科学工具(pandas、scikit-learn);符号计算(Wolfram Alpha、SymPy);以及自己编写类,以随机游走类为例。出版社称数据科学库、用SymPy做符号计算和Python类是第二版的新内容。

附录

A讲安装Python和Spyder(以及FFmpeg和ImageMagick);B讲命令行工具、文本编辑器和Git版本控制;C讲Jupyter笔记本;D讲错误与错误信息;E讲Python 2与Python 3的区别;F“Under the Hood”(赋值、内存、作用域);G是“Your Turn”问题的答案。其后是推荐阅读和索引。

核心概念

第1–4章:语言与数据

  • 算法思维与状态:第一章理解编程的方式。
  • NumPy数组:第2、3章的核心数据结构,包括切片和向量化运算。
  • 绘图:第4章中的PyPlot图形、子图和三维图。

第5–9章:建模与计算

  • 随机数与模拟:抛硬币、轨迹和直方图。
  • 数值方法:求根、积分和常微分方程求解器。
  • 作为数组的图像:第8、9章的基础。

第10章与附录

  • 数据科学库与SymPy:pandas、scikit-learn和符号计算。
  • 类:以随机游走为例的面向对象编程。
  • 版本控制:附录B中的Git。

评析

优点

  • 为物理建模而写。 前言说,作者是在职科学家,已删去一开始用不到的一切;实验章节把新工具应用到建模问题上。
  • 不需要编程经验。 出版社明确说无需任何经验,第1章从算法思维和对赋值的平实解释开始。
  • 两条路径。 “Track 2”小节让读者可以跳过较进阶的内容。
  • 实用的配套。 代码示例和数据集可在线获取,“Your Turn”问题的答案在附录G,附录还涵盖安装、命令行工具、Git和调试。
  • 第二版的更新。 出版社列出SymPy、pandas与scikit-learn、面向对象编程的新内容和一个Git附录。

局限

  • 是起点,而非参考手册。 正文约155页,只讲基础;想深入数值分析,需要篇幅更大的书。
  • 机器学习只是简介。 讲scikit-learn的10.2.2节约三页。
  • 依赖特定工具。 安装与编辑部分以Python加Spyder为中心,Jupyter另列一个附录,因此随着工具变化,有些步骤可能过时。
  • 未找到公开发表的书评。

在课程中的定位

这是计算物理书单中最平易的一本,如果编程对你是新事物,应从它开始。Newman的Computational Physics以Python为基础,有关于积分、微分方程、傅里叶方法和蒙特卡罗的例子与习题,是顺理成章的下一步。Landau、Páez和Bordeianu的Computational Physics用Python处理范围广泛的问题,包括量子力学和流体。Press等人的Numerical Recipes是带有完整程序和对陷阱讨论的参考书,Thijssen的Computational Physics是研究生水平的研究方法(如分子动力学和量子蒙特卡罗)。Taylor的An Introduction to Error Analysis不是编程书,但与数据分析各章搭配自然,因为实验工作需要不确定度估计。

如何使用本书

本书适合具备微积分和入门物理、但没有编程经验的物理、工程和理科学生。它是要在计算机前阅读的书。

建议的读法:先按附录A安装Python。然后按顺序学第1至4章,试一试每个代码示例;这是核心的语言和绘图工具。继续之前先做第一次计算机实验(第5章)。第6章是物理建模的核心,值得花最多时间。不处理图像的学生可以略过第8、9章;第10章留给要转向较大项目的人。附录D留作调试时查阅,Track 2小节初读时跳过,并用附录G核对“Your Turn”的答案。