索引 / 001 ZH-CN
Computational Physics: Problem Solving with Python(计算物理:用 Python 解决问题) cover

物理学

物理学

Computational Physics: Problem Solving with Python(计算物理:用 Python 解决问题)

Rubin H. Landau; Manuel J. Páez; Cristian C. Bordeianu

英文原名: Computational Physics: Problem Solving with Python

一本覆盖面很广的计算物理教材,通过用 Python 编写的物理例题讲授数值方法。每个主题都把物理、算法和实现结合起来,内容从误差和数值积分,经过微分方程、傅里叶分析和蒙特卡罗方法,延伸到量子力学、流体,并在本版中加入机器学习和量子计算。

需要的基础: 大学物理和微积分,以及一定的微分方程和线性代数基础;有编程经验会有帮助,但书中会介绍 Python 及其科学计算库。

难度等级
中级
学术层次
本科
computational physicspythonnumerical methodssimulation教科书

01 / 导读

导读

引用

Landau, R. H., Páez, M. J., & Bordeianu, C. C. (2024). Computational Physics: Problem Solving with Python (4th ed.). Wiley-VCH.

章节概要

第四版共分四部分、27章,正文约540页,另有代码与动画附录、参考文献和索引。第1章阐明了全书的理念:计算物理被看作联结物理学、应用数学和计算机科学的桥梁,通过一个动手实践、以探究为导向的循环来教学——先有问题,再有理论或模型、算法,最后评估结果。几乎每一章都以一个引出这些步骤的“主题问题”开篇。全书使用Python;早期版本使用过Java、Fortran和C。出版社说,全书前三分之一奠定科学计算的基础,后三分之二讲授更深入的主题,本版新增了关于量子计算、机器学习和广义相对论的章节。以下条目按全书四个部分对章节分组,并依据包括小节标题在内的目录。

第1章:引言

说明计算物理在科学中的位置、本书的主题、约60个视频讲座模块(现为mp4视频和PDF幻灯片)以及所提供的代码,并概述Python生态(Jupyter、NumPy、Matplotlib、Pandas、SymPy、VPython,推荐使用Anaconda发行版)。作者建议一个学季(一个季度)的课程大致使用全书的前三分之一,两个学季的课程使用其余部分,并说这些材料可以讲满一整年。

第2–3章:软件基础;误差与不确定度

第2章讲计算机的数的表示(IEEE浮点数)、Python简明教程、关于上溢与下溢及机器精度的编程热身,以及用VPython和Matplotlib绘图(二维、三维曲面和动画)。第3章讲误差的类型、相减抵消、舍入误差的累积、幂级数的误差,以及用递推计算贝塞尔函数时的误差。

第4–5章:蒙特卡罗模拟;微分与积分

蒙特卡罗从随机数开始,进而讲随机行走(包括在大脑中以及蛋白质折叠中的例子)、自发衰变和随机分布的检验。第5章讲前向差分、中心差分与外推差分,梯形法则与辛普森法则,高斯求积,蒙特卡罗积分,方差缩减,重要性抽样与冯·诺依曼舍选法。

第6–8章:试错搜索与数据拟合;矩阵计算与N维搜索;微分方程与非线性振动

第6章借助量子束缚态和磁化问题引入二分搜索与牛顿–拉弗森搜索,然后讲拉格朗日插值、三次样条和最小二乘的数据拟合,最后以对共振的非线性拟合结束。第7章通过弦上的质量块和氢超精细结构中的自旋态来讲Python与NumPy中的矩阵,并有一节讲向量化。第8章回顾常微分方程以及欧拉法、龙格–库塔法和预估–校正算法,然后将它们应用于非线性振子、共振、拍和摩擦。

第9–10章:傅里叶分析;小波与主成分分析(第二部分:数据科学)

傅里叶级数与变换、离散变换与混叠、噪声滤波和快速傅里叶变换;随后讲波包与不确定性原理、短时傅里叶变换、小波变换以及主成分分析。

第11–12章:神经网络与机器学习;量子计算

第11章从单个神经元搭建一个简单的神经网络,然后讲TensorFlow、scikit-learn、聚类、Keras以及用OpenCV进行图像处理。第12章(与G. He合著)介绍狄拉克记号、量子比特、纠缠、逻辑门、用IBM Quantum和Qiskit编程、量子傅里叶变换、格罗弗搜索算法和肖尔分解算法。

第13–16章:常微分方程的应用;分形与统计生长模型;非线性种群动力学;连续系统的非线性动力学(第三部分:应用)

任意势下的本征值、经典混沌散射、有空气阻力的抛体运动和行星轨道;从谢尔宾斯基垫片到扩散限制凝聚的分形;逻辑斯谛映射、分岔图和捕食者–猎物模型;以及混沌摆、相空间和洛伦兹吸引子等其他混沌系统。

第17–20章:热力学模拟与费曼路径积分;分子动力学模拟;广义相对论;积分方程

伊辛链、Metropolis算法和路径积分量子力学;用Verlet算法的分子动力学;爱因斯坦场方程、光线偏折、近日点进动和虫洞;以及非定域势和动量空间中的散射。

第21–24章:偏微分方程回顾、静电学与弛豫;热流与蛙跳法;弦与膜的波;量子波包与电磁波(第四部分:偏微分方程的应用)

用有限差分和弛豫法求解拉普拉斯方程;用蛙跳法和克兰克–尼科尔森算法求解热方程;弦与膜的波;以及含时薛定谔方程和时域有限差分的麦克斯韦方程求解器。

第25–27章:激波与孤子波;流体动力学;有限元静电学

伯格斯方程、KdV孤子和正弦–戈登方程;涡度形式的纳维–斯托克斯方程;以及针对两块板静电问题的有限元方法。

核心概念

第一部分:基础(第1–8章)

  • 浮点运算与误差:IEEE数、舍入误差和相减抵消。
  • 蒙特卡罗方法:随机行走、衰变模拟和蒙特卡罗积分。
  • 搜索与拟合:二分法、牛顿–拉弗森法、样条和最小二乘。
  • 常微分方程算法:欧拉法、龙格–库塔法和预估–校正法。

第二部分:数据科学(第9–12章)

  • 傅里叶与小波分析:离散变换、FFT、小波和主成分。
  • 神经网络与机器学习:TensorFlow、Keras和scikit-learn的例子。
  • 量子计算:量子比特、量子门、格罗弗算法与肖尔算法。

第三、四部分:应用与偏微分方程(第13–27章)

  • 非线性动力学与混沌:逻辑斯谛映射、混沌摆和洛伦兹吸引子。
  • 有限差分与有限元方法:弛豫法、蛙跳法、克兰克–尼科尔森法和有限元法。
  • 波动现象:弦波、波包、激波和孤子。

评析

优点

  • 在做中学。 第1章提出了“问题—模型—算法—评估”的明确循环,几乎每章都以一个主题问题开篇。作者为大多数问题提供了程序,并建议学生撰写简短的实验报告,包含所解的方程、方法、代码、可视化和评述。
  • 应用范围广。 目录从误差与求积,一直到路径积分、分子动力学、广义相对论、流体和有限元,为课程提供了许多项目选择。
  • 配套材料。 据第1章和出版社介绍,约60个附幻灯片的视频讲座模块、代码以及早期版本的笔记本版本都与本书配套。
  • 新的主题。 第四版新增了机器学习、量子计算和广义相对论的章节,出版社把这说成是对数据科学更加重视。

局限

  • 是概览,而非基础理论教科书。 作者说,本书不是对计算物理基础的学术性阐述,而是一份概览,其难度适合本科生,“也许有些章节的后半部分除外”。
  • Python的介绍很简短。 第2章是唯一专门讲编程的章节,作者建议读者到外部教程和书籍学习Python,因此初学者可能需要另外的Python学习资料。
  • 书中有些工具已经过时。 书中自己指出,Visual(VPython)模块已不再受支持,现在只能在Jupyter或Web VPython中使用,这关系到第2章的可视化小节。
  • 广度限制了深度。 27章只有约540页,许多章节(如第18章和第19章)不足20页,因此每个应用都只是入门,而不是完整论述。

在课程中的定位

在计算物理书单中,兰道(Landau)、帕埃斯(Páez)与博尔代亚努(Bordeianu)这本书是通过求解物理问题来讲授数值方法的、内容广泛且应用丰富的教材。纽曼(Newman)的《Computational Physics》是最接近的替代选择,同样以Python的例题和练习为基础。普林斯顿大学图书馆目录所记录的纽曼目录,以较少的章节涵盖了类似的核心(精度、积分与微分、方程、傅里叶变换、常微分方程、偏微分方程、蒙特卡罗),而兰道这本书增加了数据科学章节和一长串应用章节。金德(Kinder)与纳尔逊(Nelson)的《A Student's Guide to Python for Physical Modeling》是为没有编程经验的学生写的简短实用指南,可以在读第2章之前阅读。

普雷斯(Press)等人的《Numerical Recipes》是附有完整C++程序的数值方法参考书,作者自己把它列为数值方法的标准通用读物;蒂森(Thijssen)的《Computational Physics》是面向研究生、讲授凝聚态物理与化学研究方法的论述;泰勒(Taylor)的《An Introduction to Error Analysis》讲实验数据的不确定度,可与第3章互补。兰道这本书介于工具入门与蒂森的研究级方法之间。

如何使用本书

本书面向已学完入门物理和微积分、并了解一些微分方程和线性代数的物理、工程和材料科学专业学生。有编程经验会有帮助,但不是必需的;作者期望读者能够运行并修改示例代码。

实用的安排:

  • 核心(第1–8章): Python、误差、蒙特卡罗、微分与积分、搜索与拟合、矩阵与常微分方程。每个主题问题都动手写代码。
  • 数据科学(第9–12章): 第9章的傅里叶分析用途最广;第10–12章可以按兴趣选读。
  • 应用(第13–27章): 根据项目挑选。第13章和第16章直接建立在第8章的常微分方程求解器之上,第22–25章紧接第21章的偏微分方程回顾。
  • 配合: 先运行所提供的代码,再修改它们;每个问题写一份简短的实验报告,并把视频讲座用于预习或复习。