索引 / 001 JA
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.

章の要約

第4版は4部27章からなり、本文は約540ページ、そのほかにコードとアニメーションの付録、参考文献、索引がある。第1章が基本方針を説明する。計算物理学は、物理学、応用数学、計算機科学を結ぶ橋として扱われ、問題、理論またはモデル、アルゴリズム、結果の評価という、実践的で探究型のサイクルを通じて教えられる。ほぼすべての章が、これらの段階へと導くキーノートの「問題」で始まる。全体を通して言語はPythonであり、以前の版はJava、Fortran、Cを使っていた。出版社によれば、本書の最初の3分の1が科学計算の基礎を築き、後半の3分の2がより進んだ話題を扱う。この版では、量子コンピューティング、機械学習、一般相対性理論の新しい章が加わった。以下の項目は、本書の4つの部ごとに章をまとめ、節の見出しを含めて目次に沿っている。

第1章:序論

科学の中での計算物理学の位置づけ、本書の主題、約60本の動画講義モジュール(現在はmp4動画とPDFスライド)と提供されるコードを説明し、Pythonのエコシステム(Jupyter、NumPy、Matplotlib、Pandas、SymPy、VPython。Anaconda配布の使用を推奨)を概観する。著者は、1クォーターの課程には本書のおよそ最初の3分の1を、2クォーターの課程には残りを使うことを勧め、教材は1年分にもなりうるとしている。

第2–3章:ソフトウェアの基礎/誤差と不確かさ

第2章は、計算機の数の表現(IEEE浮動小数点数)、Pythonのミニチュートリアル、オーバーフローとアンダーフローおよび機械精度についての準備演習、VPythonとMatplotlibによる作図(2D、3D曲面、アニメーション)を扱う。第3章は、誤差の種類、桁落ち、丸め誤差の蓄積、べき級数における誤差、漸化式で計算するベッセル関数の誤差を扱う。

第4–5章:モンテカルロ・シミュレーション/微分と積分

モンテカルロは乱数から始まり、ランダムウォーク(脳内や蛋白質の折りたたみを含む)、自発的崩壊、乱数分布の検証へと進む。第5章は、前進・中心・外挿差分、台形則とシンプソン則、ガウス求積、モンテカルロ積分、分散低減、重点サンプリングとフォン・ノイマンの棄却法を扱う。

第6–8章:試行錯誤による探索とデータフィッティング/行列計算とN次元探索/微分方程式と非線形振動

第6章は、量子束縛状態と磁化の問題を使って二分法とニュートン=ラフソン法による探索を導入し、続いてラグランジュ補間、3次スプライン、最小二乗法によるデータフィッティングを扱い、共鳴への非線形フィットで終わる。第7章は、弦につながれた質量とスピン状態の超微細構造を通じてPythonとNumPyの行列を扱い、ベクトル化の節も含む。第8章は常微分方程式を復習し、オイラー法、ルンゲ=クッタ法、予測子修正子法を扱ったうえで、非線形振動子、共鳴、うなり、摩擦に応用する。

第9–10章:フーリエ解析/ウェーブレットと主成分分析(第II部:データサイエンス)

フーリエ級数と変換、離散変換とエイリアシング、ノイズのフィルタリング、高速フーリエ変換。続いて、波束と不確定性原理、短時間フーリエ変換、ウェーブレット変換、主成分分析を扱う。

第11–12章:ニューラルネットワークと機械学習/量子コンピューティング

第11章は、1つのニューロンから簡単なニューラルネットワークを組み立て、TensorFlow、scikit-learn、クラスタリング、Keras、OpenCVによる画像処理へと進む。G. Heとの共著である第12章は、ディラック記法、量子ビット、エンタングルメント、論理ゲート、IBM QuantumとQiskitによるプログラミング、量子フーリエ変換、グローバーの探索アルゴリズム、ショアの素因数分解を導入する。

第13–16章:ODEの応用/フラクタルと統計的成長モデル/非線形個体群動態/連続系の非線形力学(第III部:応用)

任意のポテンシャルに対する固有値、古典カオス散乱、空気抵抗のある放物運動と惑星軌道。シェルピンスキーのガスケットから拡散律速凝集に至るフラクタル。ロジスティック写像、分岐図、捕食者–被食者モデル。カオス振り子、位相空間、ローレンツアトラクタなどのその他のカオス系。

第17–20章:熱力学シミュレーションとファインマン経路積分/分子動力学シミュレーション/一般相対性理論/積分方程式

イジング鎖、メトロポリス法、経路積分量子力学。ベルレ・アルゴリズムによる分子動力学。アインシュタイン方程式、光の偏向、近日点移動、ワームホール。非局所ポテンシャルと運動量空間での散乱。

第21–24章:偏微分方程式の復習、静電気学と緩和法/熱の流れとリープフロッグ/弦と膜の波/量子波束と電磁波(第IV部:偏微分方程式の応用)

差分法と緩和法によるラプラス方程式。リープフロッグ法とクランク=ニコルソン法による熱方程式。弦と膜の波。時間依存シュレーディンガー方程式と、時間領域差分法によるマクスウェル方程式の解法。

第25–27章:衝撃波とソリトン波/流体力学/有限要素法による静電気学

バーガース方程式、KdVソリトン、サイン・ゴルドン方程式。渦度形式のナビエ=ストークス方程式。2枚の板の静電問題に対する有限要素法。

主要概念

第I部:基礎(第1–8章)

  • 浮動小数点演算と誤差:IEEE数、丸め誤差、桁落ち。
  • モンテカルロ法:ランダムウォーク、崩壊のシミュレーション、モンテカルロ積分。
  • 探索とフィッティング:二分法、ニュートン=ラフソン法、スプライン、最小二乗法。
  • 常微分方程式のアルゴリズム:オイラー法、ルンゲ=クッタ法、予測子修正子法。

第II部:データサイエンス(第9–12章)

  • フーリエ解析とウェーブレット解析:離散変換、FFT、ウェーブレット、主成分。
  • ニューラルネットワークと機械学習:TensorFlow、Keras、scikit-learnの例。
  • 量子コンピューティング:量子ビット、ゲート、グローバーとショアのアルゴリズム。

第III–IV部:応用と偏微分方程式(第13–27章)

  • 非線形力学とカオス:ロジスティック写像、カオス振り子、ローレンツアトラクタ。
  • 差分法と有限要素法:緩和法、リープフロッグ、クランク=ニコルソン、有限要素法。
  • 波動現象:弦の波、波束、衝撃波、ソリトン。

批判的分析

長所

  • 実践して学ぶ。 第1章は、問題、モデル、アルゴリズム、評価という明確なサイクルを示し、ほぼすべての章がキーノートの問題で始まる。著者はほとんどの問題にプログラムを提供し、解いた方程式、方法、コード、可視化、批評を含む短い実験レポートを学生に書かせることを勧めている。
  • 応用の幅。 目次は、誤差と数値積分から、経路積分、分子動力学、一般相対性理論、流体、有限要素法にまで及び、課程に多くのプロジェクトの選択肢を与える。
  • 付属教材。 第1章と出版社によれば、スライド付きの約60本の動画講義モジュール、コード、以前の版のノートブック版が本書に付随する。
  • 新しい話題。 第4版は機械学習、量子コンピューティング、一般相対性理論の章を加え、出版社はそれをデータサイエンスへの重点の強化と位置づけている。

短所

  • 概説であって基礎論の教科書ではない。 著者は、本書は計算物理学の基礎の学術的な叙述ではなく概説であり、「いくつかの章の後半部分を除けば」学部レベルに合わせてあると述べている。
  • Pythonの導入は簡潔。 プログラミングを専門に扱う章は第2章だけで、著者はPythonを学ぶために外部のチュートリアルや書籍を勧めているため、初心者は別のPythonの資料が必要になるかもしれない。
  • テキスト内で時代遅れになっている道具がある。 本書自身が、Visual(VPython)モジュールはもはやサポートされず、JupyterまたはWeb VPythonの中でのみ存続していると記しており、第2章の可視化の節に関わる。
  • 幅の広さが深さを制限する。 27章で約540ページという構成のため、多くの章(たとえば第18章と第19章)は20ページに満たず、それぞれの応用は完全な扱いではなく入門にとどまる。

コースにおける位置づけ

計算物理学の書単の中で、ランダウ、パエス、ボルデイアヌの本は、物理の問題を解きながら数値計算法を教える、幅広く応用の豊かな教科書である。ニューマンの『Computational Physics』は最も近い代替で、やはりPythonでの例題と演習を軸にしている。プリンストン大学図書館の目録に記録されたニューマンの目次は、精度、積分と微分、方程式、フーリエ変換、ODE、PDE、モンテカルロといった同様の中核をより少ない章で扱うが、ランダウ版はデータサイエンスの章と多数の応用の章を加えている。キンダーとネルソンの『A Student's Guide to Python for Physical Modeling』は、プログラミング経験のない学生向けの短い実践的ガイドで、第2章の前に読める。

プレスらの『Numerical Recipes』は、C++による完全なルーチンを備えた数値計算法の参考書で、著者自身が数値計算法の標準的な一般書として挙げている。ティッセンの『Computational Physics』は、物性物理学と化学の研究手法を扱う大学院レベルの解説で、テイラーの『An Introduction to Error Analysis』は実験データの不確かさを扱い、第3章を補う。ランダウらの本は、道具の入門とティッセンの研究レベルの手法の中間に位置する。

本書の使い方

本書は、入門物理と微積分を終え、微分方程式と線形代数をある程度知っている物理、工学、材料科学の学生を対象とする。プログラミングの経験があると助けになるが必須ではなく、著者は読者がサンプルコードを実行して修正できることを期待している。

実践的な進め方:

  • 中核(第1–8章): Python、誤差、モンテカルロ、微分と積分、探索とフィッティング、行列とODE。すべてのキーノート問題をコードにする。
  • データサイエンス(第9–12章): 第9章のフーリエ解析が最も広く役に立つ。第10–12章は関心に応じて選べる。
  • 応用(第13–27章): プロジェクトに応じて選ぶ。第13章と第16章は第8章のODEソルバーに直接つながり、第22–25章は第21章のPDEの復習に続く。
  • 併用: 提供されているコードを実行してから改変する。各問題について短い実験レポートを書き、動画講義は予習や復習に使う。