01 / 読書ガイド
読書ガイド
引用
Kinder, J. M., & Nelson, P. (2021). A Student's Guide to Python for Physical Modeling (2nd ed.). Princeton University Press.
章の要約
第2版は全240ページで、約155ページの10章、7つの付録、短い序文「Let's Go」からなる。10章は解説の章と、新しい道具をモデリング問題に適用する3つの「Computer Lab」の章が交互に並ぶ。序文によれば、「Track 2」と記された節や脚注はより発展的で、初読時には飛ばしてよい。
第1章:Getting Started with Python(Pythonを始める)
アルゴリズム的思考、プログラムの状態の考え方、a = a + 1のような代入の意味から始まり、IPythonコンソールでのPythonの起動、エラーメッセージの読み方、助けの得方、ログの記録が続く。章の終わりはモジュール(import、NumPy、PyPlot)とPythonの式(数値、算術、組み込み関数、変数名、関数)である。
第2章:Organizing Data(データの整理)
オブジェクトとメソッド、続いてリスト、タプル、NumPy配列:作成と値の設定、連結、要素へのアクセス、スライス、平坦化、形状変更。文字列とその書式設定も扱う。
第3章:Structure and Control(構造と制御)
ループ(forとwhile)、配列のベクトル化された演算、行列演算、配列の縮約、続いてスクリプトとエディタ(コメント、名前付き引数、単位に関する良い習慣を含む)。最後に分岐(if文、浮動小数点数の等価性の検査)と入れ子を扱う。
第4章:Data In, Results Out(データ入力、結果出力)
データの読み込み、スクリプトやファイルへの書き出し、データの可視化:plotコマンド、対数軸、曲線の装飾と置き換え、誤差棒、3Dグラフ、複数のプロット、サブプロット、図の保存。
第5章:First Computer Lab(第1回コンピュータ実習)
HIVモデルと細菌モデルの二つの例を軸にした短い実習の章で、それぞれ「モデルを調べる」と「実験データに当てはめる」の段階がある。
第6章:Random Number Generation and Numerical Methods(乱数生成と数値計算法)
長めの章(28ページ)。関数の作成、乱数とシミュレーション(コイン投げ、軌跡)、ヒストグラムと棒グラフ、等高線図・曲面図・ヒートマップ、非線形方程式の数値解、連立一次方程式、数値積分、微分方程式の数値解を扱い、ベクトル場と流線で終わる。
第7章:Second Computer Lab(第2回コンピュータ実習)
軌跡の生成とプロット、変位分布のプロット、まれな事象(ポアソン分布と待ち時間)。
第8章:Images and Animation(画像とアニメーション)
NumPy配列としての画像とその操作、データの画像としての表示、アニメーションの作成と保存。
第9章:Third Computer Lab(第3回コンピュータ実習)
画像処理の演習:畳み込み(平均化とガウス平滑化)、画像のノイズ除去、特徴の強調。
第10章:Advanced Techniques(高度な技法)
辞書、特殊な関数引数、リスト内包表記とジェネレータ、データサイエンスのツール(pandas、scikit-learn)、記号計算(Wolfram Alpha、SymPy)、そしてランダムウォーク・クラスを例とした独自クラスの作成。出版社は、データサイエンス用ライブラリ、SymPyによる記号計算、Pythonのクラスを第2版の新内容として挙げている。
付録
Aは PythonとSpyder(およびFFmpegとImageMagick)のインストール、Bはコマンドラインツール、テキストエディタ、Gitによるバージョン管理、CはJupyterノートブック、Dはエラーとエラーメッセージ、EはPython 2とPython 3の違い、Fは「Under the Hood」(代入、メモリ、スコープ)、Gは「Your Turn」問題の解答である。その後に推薦図書と索引が続く。
主要概念
第1〜4章:言語とデータ
- アルゴリズム的思考と状態:第1章がプログラミングを捉える枠組み。
- NumPy配列:第2、3章の中心的なデータ構造で、スライスとベクトル化演算を伴う。
- プロット:第4章のPyPlotの図、サブプロット、3Dグラフ。
第5〜9章:モデリングと計算
- 乱数とシミュレーション:コイン投げ、軌跡、ヒストグラム。
- 数値計算法:求根、数値積分、常微分方程式のソルバー。
- 配列としての画像:第8、9章の基礎。
第10章と付録
- データサイエンス用ライブラリとSymPy:pandas、scikit-learn、記号計算。
- クラス:ランダムウォークで示されるオブジェクト指向プログラミング。
- バージョン管理:付録BのGit。
批判的分析
長所
- 物理的モデリングのために書かれている。 序文によれば、著者は現役の科学者で、最初に必要ないものはすべて省いた。実習の章は新しい道具をモデリング問題に適用する。
- プログラミングの経験を前提としない。 出版社は経験が不要だと明言し、第1章はアルゴリズム的思考と代入の平易な説明から始まる。
- 二つのトラック。 Track 2の節により、読者は発展的な内容を飛ばせる。
- 実用的な支援。 コードサンプルとデータセットはオンラインにあり、「Your Turn」の解答は付録Gにあり、付録はインストール、コマンドラインツール、Git、デバッグを扱う。
- 第2版での更新。 出版社は、SymPy、pandasとscikit-learn、オブジェクト指向プログラミングの新内容とGitの付録を挙げている。
短所
- 出発点であって、リファレンスではない。 本文約155ページで基礎を教えるもので、数値解析を深く学ぶにはより大きな本が必要である。
- 機械学習は紹介にとどまる。 scikit-learnを扱う10.2.2節は約3ページである。
- 特定のツールに依存。 インストールと編集の説明はPythonとSpyderを中心に作られ、Jupyterは別の付録にあるため、ツールの変化につれて古くなる手順もありうる。
- 公表された書評は見つからなかった。
コースにおける位置づけ
計算物理の書目の中で最も取りつきやすく、プログラミングが初めてならここから始めるべき本である。Newmanの Computational Physics はPythonによる本で、積分、微分方程式、フーリエ法、モンテカルロの例題と演習があり、自然な次の一冊である。Landau、Páez、Bordeianuの Computational Physics は量子力学や流体を含む広い範囲の問題をPythonで扱う。Pressらの Numerical Recipes は完全なルーチンと落とし穴の議論を備えた参考書で、Thijssenの Computational Physics は分子動力学や量子モンテカルロのような研究手法を扱う大学院向けの本である。Taylorの An Introduction to Error Analysis はプログラミングの本ではないが、実験には不確かさの見積もりが必要なので、データ解析の章と組み合わせるのに適している。
本書の使い方
微積分と入門物理の知識があり、プログラミングの経験がない物理・工学・理科の学生に向く。コンピュータの前で読むための本である。
実践的な進め方としては、まず付録AでPythonをインストールする。次に第1〜4章を順に進め、すべてのコードサンプルを試す。これが中核となる言語とプロットの道具である。先へ進む前に第1回コンピュータ実習(第5章)を行う。第6章は物理的モデリングの中心で、最も時間をかけるべきである。画像を扱わない学生は第8、9章を省いてよく、第10章はより大きなプロジェクトに進む人向けである。付録Dはデバッグ用に取っておき、Track 2の節は最初は飛ばし、付録Gで「Your Turn」の解答を確認する。
