
资源介绍
该书将地道的 Python 编程、基础数值方法与物理应用紧密结合,是计算物理课程理想的独立教材。书中涵盖了物理学中常用的各类数值方法,不仅有线性代数、微分方程、求根、插值和积分等基础技术,还包含了奇异值分解、无导数优化、贝叶斯线性回归、神经网络和偏微分方程等较深入的内容。与第一版相比,第二版新增了若干代码和 140 道新习题(其中不少涉及物理应用),并新增了多个章节。每章的最后一部分是深入的项目,旨在解决那些不借助计算机就无法解决的物理问题。本书主要面向学习计算物理的学生,先帮助非专业人士快速掌握 Python,之后再详细讲解该学科中常用的数值方法。
书籍核心内容
基础编程与数值方法融合
书中首先聚焦 “地道的 Python 编程”,并非泛泛介绍 Python 基础,而是着重讲解符合 Python 语言特性的编程方式。比如先从标准 Python 入手,使用几章后再引入 NumPy 库,帮助 Python 新手清晰区分列表和 NumPy 数组。第一章就包含现代编程惯用法的讨论,这使得后续章节能编写更简洁的代码,从而将重点放在数值方法而非编程细节上。同时,书中还涵盖了 Python 的核心特性总结,像变量类型、控制流(条件语句、循环)、数据结构(列表、元组、字符串、字典)以及用户自定义函数等,并且介绍了列表推导式、迭代技巧(如反向迭代、并行迭代字典键值对)、for-else 结构等实用的 Python 惯用法,还有 Matplotlib 基础绘图以及 NumPy 数组的创建、索引、切片、广播和向量运算等内容。
在数值方法方面,从基础的数值表示与误差分析开始,深入讲解导数计算(解析微分、有限差分、自动微分)、矩阵运算(线性方程组求解、特征值问题、奇异值分解)、求根与极值问题(单变量非线性方程、多项式求根、非线性方程组、一维与多维极值求解)、逼近问题(多项式插值、三次样条插值、三角插值、线性与非线性最小二乘拟合、线性统计推断)、积分(牛顿 - 科茨方法、自适应积分、龙贝格积分、高斯求积、蒙特卡洛积分)到微分方程(初值问题、边值问题、特征值问题、偏微分方程),全面覆盖了计算物理中常用的数值方法。
物理应用与实践项目结合
书中众多知识点都以物理场景为驱动。例如在导数部分,结合经典力学中速度的定义(位置对时间的导数)、电磁学中电场与电势和矢量势的关系、连续杆振动的拉格朗日密度等物理例子,让读者理解导数在物理中的应用;在矩阵部分,通过二维旋转、静电势计算、刚体转动惯量张量等物理案例,展现线性代数在物理中的重要性。
每章末尾的项目更是将数值方法与物理问题深度融合。如第一章的 “电场可视化” 项目,利用 Matplotlib 绘制多个点电荷产生的电场线,帮助读者直观理解电场这一矢量场;第二章的 “电磁学中的多极展开” 项目,研究多个点电荷的静电势,并引入勒让德多项式,探讨多极展开在静电学中的应用,同时涉及级数收敛和递推关系等数值问题;第三章的 “量子力学中的局域动能” 项目,展示如何通过数值求二阶导数来计算量子力学中的动能,还体现了函数接口设计的重要性,让一个 Python 函数能处理不同的物理场景(如谐振子和周期箱中的粒子)。
丰富的习题与学习资源
第二版新增 140 道习题,这些习题涵盖多个方面:对正文介绍技术的拓展、原本需要大量篇幅讨论的主题(如约束极值问题)以及众多物理应用(如二维伊辛模型、伦纳德 - 琼斯势的分子动力学、波包与势垒的散射、相对论粒子质量的可信区间、圈积分的维数正规化等)。部分物理主题还会跨章节延续,如罗歇势的可视化、极值求解、体积计算以及相关微分方程求解等,帮助读者构建连贯的物理知识与数值方法应用体系。
此外,书中提供了相关的在线资源,读者可在指定网站获取部分习题解答作为自学资源,还有与书中内容配套的 Python 代码,方便读者下载使用,结合代码阅读和实践,更好地理解和掌握书中的数值方法与物理应用。
书籍特色与价值
兼顾基础与前沿
本书既注重基础数值方法的讲解,确保读者掌握如线性代数、微分方程数值解法等核心基础内容,为后续学习打下坚实基础;又引入了一些现代数值分析技术,如自动微分、切比雪夫点插值、贝叶斯线性回归、神经网络等,这些技术在其他计算物理教材中较少涉及,让读者接触到领域内的前沿内容,拓宽知识面。
注重理解与实践
在讲解数值方法时,通常从简单粗糙的算法入手,逐步过渡到更复杂的方法,在很多情况下还会涵盖最先进的技术(在不需要复杂记录的情况下)。同时,会花费大量精力阐述每种技术的动机和原理,章节安排也具有累积性,从基础开始逐步深入,不依赖专业背景或更高级的参考资料,让读者不仅知其然,更知其所以然。
书中的代码清单嵌入到主要讨论中,而非放在章节末尾或在线补充材料里,且每个实现通常有自己的小节,方便教师选择教学内容。这些代码简洁明了,最长不超过一页,可作为读者进一步代码开发的模板,帮助读者通过实践掌握数值方法的实现,将理论知识转化为实际编程能力。
适用范围广
本书主要面向学习计算物理的高年级本科生或低年级研究生,帮助他们掌握计算物理所需的 Python 编程和数值方法。同时,由于书中将数值方法与物理问题清晰分离,每章聚焦一个数值主题,先讨论涉及相关工具的物理场景,再重点讲解数值方法及其实现(通常不涉及物理例子),最后通过物理项目应用所学内容,因此对物理背景有限的其他理工科学生,甚至对数值方法感兴趣的非理工科读者,也具有一定的参考价值,可作为学习 Python 数值方法的入门书籍。NUMERICAL METHODS IN PHYSICS WITH PYTHON