索引 / 001 ZH-CN
Computational Physics(计算物理) cover

物理学

物理学

Computational Physics(计算物理)

Mark Newman

英文原名: Computational Physics

一部围绕Python例题和习题编写的自出版计算物理教科书。它讲授物理学家所需的数值方法,从积分和解方程到微分方程、傅里叶方法、蒙特卡罗方法和含时薛定谔方程,并展示如何把每种方法变成可运行的代码。

需要的基础: 具备微积分、力学和电磁学入门知识,并愿意从开头几章学习Python即可。

难度等级
中级
学术层次
本科
computational physicsnumerical methodspythonsimulation教科书

01 / 导读

导读

引用

Newman, M. (2012). Computational Physics. CreateSpace Independent Publishing Platform.

已有较新的版本(第2版,2025年);章节编号和部分内容可能有所不同。

章节概要

这是马克·纽曼(Mark Newman)以Python为基础的教材,由CreateSpace出版,有2012年版次;图书馆记录中另有标注为2013年的“修订增补”版次,约549页。此后又出现了约611页的第二版,因此下面的叙述针对的是第一版。普林斯顿大学图书馆的记录把它概括为一本从Python入门开始、逐步讲解计算物理技术的书,例子从简单的力学问题一直到量子力学、电磁学和统计力学中的复杂计算。出版社的介绍把有限差分法、数值求积和快速傅里叶变换列为每位物理学家都应知道的技术,并称本书是完整的本科入门读物,同时也适合高年级学生和研究人员。图书馆记录把内容列为下面的各章、附录和索引,章的编号依此顺序。

第1章:引言

图书馆记录中列出的开篇章节;下文讨论的书评没有描述这一章。

第2章:面向物理学家的Python编程

讲Python语法和程序结构的基础。据埃里克·阿亚斯(Eric Ayars)发表于《Computing in Science & Engineering》(2014年1/2月号)的书评,这一章足以让大多数没有编程经验的学生入门。

第3章:图形与可视化

阿亚斯指出,紧接Python基础之后的这一章介绍Python的绘图功能,使学生能很快把学到的东西用于其他课程。

第4章:精度与速度

一章篇幅简短,讲数值计算的精度与速度。阿亚斯起初觉得它的位置靠前有些奇怪,但他报告说,关于精度、准确度以及不同方法相对误差的讨论在后面各章中反复出现,而这一章把它们串联在了一起。

第5–6章:积分与导数;线性与非线性方程的求解

积分与微分,然后是求根。阿亚斯说,作者通常先讲最简单的方法,再逐步建立到更强大的技术,并在大多数小节的末尾提到能解决该问题的NumPy或SciPy函数。他提到龙贝格积分(Romberg integration)是通过这本书才变得更清楚的一个话题。

第7–9章:傅里叶变换;常微分方程;偏微分方程

傅里叶方法、常微分方程和偏微分方程这一标准序列,图书馆记录中均有列出;据阿亚斯所述,它们属于常见的入门计算主题。

第10–11章:随机过程与蒙特卡罗方法;运用所学

蒙特卡罗方法靠近书的末尾,随后是标题为“Using what you have learned(运用所学)”的收尾章节,最后是附录。

核心概念

第1–4章:工具

  • Python编程:第2章的主题。
  • 图形与可视化:第3章。
  • 精度与速度:第4章,书评把它视为贯穿其余部分的一条线索。

第5–9章:数值方法

  • 积分与导数:第5章,包括求积。
  • 线性与非线性方程的求解:第6章。
  • 傅里叶变换:第7章。
  • 微分方程:常微分方程(第8章)和偏微分方程(第9章)。

第10–11章:随机方法与实践

  • 随机过程与蒙特卡罗方法:第10章。

评析

优点

  • 讲解清晰易读。 阿亚斯称本书“出人意料地好读”,并说讲解很清楚:作者几乎总是先对最简单的方法作透彻的说明,然后再向更强大的技术推进。
  • 从一开始就用Python。 开头几章先教语言及其绘图工具,再开始数值方法,因此没有编程基础的学生也能入手。阿亚斯讲授一学期的计算物理课程,称这是他所知的同类Python教材中最早出版的一本,并说他乐于采用。
  • 以精度为统一主题。 同一篇书评指出,前面关于精度与速度的一章为后面各节比较不同方法的误差提供了共同的参照点:几乎每一节都会回到这一章。
  • 与Python库相联系。 多数小节结尾处会指出在实践中完成该技术的NumPy或SciPy函数。

局限

  • 书评者指出的缺口。 阿亚斯发现两处遗漏:曲线拟合的内容只有一道章末习题,没有非线性拟合,也没有提到SciPy的拟合工具;此外书中不涉及文件的读写。他认为这两点都容易在课堂上补充。
  • 范围有取舍。 目录中没有专门讲曲线拟合、插值或数据分析的章节,而出版社对第二版的介绍称,插值和数据分析等方面增加了大量新内容。
  • 已被取代的版次。 这里所述的是2012/2013年的版次;第二版为611页,而第一版约549页,内容经过大幅修订和更新,因此读者应当确认自己手中是哪一版。

在课程中的定位

在计算物理书单中,纽曼的书是两部以Python为基础的计算物理教材之一。兰道、帕埃斯与博尔代亚努的《Computational Physics: Problem Solving with Python》在第四版中增加了数据科学章节(傅里叶分析、小波、机器学习、量子计算)和一大批应用章节,而纽曼的目录更短,集中于核心方法。想要一门第一学期课程的学生可以考虑纽曼;想要涵盖物理各领域应用的学生可以考虑兰道。

金德与纳尔逊的《A Student's Guide to Python for Physical Modeling》是一本不要求编程经验的、简短而实用的Python入门读物,可与纽曼的第2–3章同时阅读。普雷斯等人的《Numerical Recipes》是附有完整C++程序的数值方法参考书,蒂森的《Computational Physics》是面向研究生、讲授凝聚态物理和化学中方法的论述,泰勒的《An Introduction to Error Analysis》则是第4章不确定度思想的配套读物。

如何使用本书

先修要求是微积分、入门力学和电磁学;由于Python在开头几章中讲授,不要求有编程经验。

实用的安排:

  • 开始: 边写边运行小程序,边读第2章和第3章。
  • 核心: 按顺序读第4–9章,对后面每一种方法都记着第4章对误差的讨论。
  • 后面的章节: 第10章的蒙特卡罗方法,以及应用所学内容的最后一章。
  • 补充: 按书评的建议,补充一小段关于文件输入输出、以及用SciPy进行曲线拟合的内容。
  • 确认版本: 在照着课程大纲的章节编号阅读之前,先确认自己手上的是第一版还是第二版。