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章的偏微分方程回顾。
- 配合: 先运行所提供的代码,再修改它们;每个问题写一份简短的实验报告,并把视频讲座用于预习或复习。
