Physics Lab. 2024のロゴ

アドカレ|7日目

計算物理班紹介

PhysicsLab. 2024 計算物理班の紹介記事です。

計算物理について

計算物理は、計算機[1]を用いて物理系を調べる物理の一分野です。

物理理論が解析的に解ける系は単純で性質が良いものがほとんどですが、実験で扱う系は一般に複雑で[2]、理論の適用できる形に持ち込むためには大胆な近似が必要になってしまいます。計算物理は実験系に理論式を当てはめて、計算機でゴリゴリ解いてやることでより正確な予測結果を得て、理論と実験の間をつなぐことができます。いわゆる物理シミュレーションというものです。

計算物理の取り扱う範囲は、具体的な系のシミュレーションが主領域ではありますが、周辺にシミュレーションの最適化、シミュレーションそのものの性質の研究など、情報科学や数学に近しい領域も広がっています。これは計算機を用いたことから生える制約のためです。計算機には時間と誤差がつきまといます。つまり、計算速度と計算精度がトレードオフを成します。そこでより優れた手法(アルゴリズム)を使って高速・高精度を同時に実現しようとしたり、或いはこのトレードオフの限界を探ったり[3]するわけです。

物理系を実際のシミュレーションプログラムに落とし込むとき、一般には

  1. 数学的問題への帰結
  2. アルゴリズムの最適化[4]
  3. 計算資源の活用[4:1]

の順に行い、扱う対象は物理理論→数学的問題→アルゴリズム→プログラムと変遷していきます。以下ではそれぞれのステップをより詳しく見ていくことにします。

数学的問題への帰結

物理の基礎方程式を数学的問題に変換することで数値解析の適用範囲に持ち込むわけですが、系の性質を考えることで用いるべき計算手法の指針を得ることができます。 基礎方程式に頻出する微分方程式を例とすると、高周波成分がなければフーリエ変換して解く、ハミルトン系であればシンプレクティック解法を用いる、というように、系の性質から比較的誤差が小さいが計算量を大きく落とせる方法を選べるわけです。

アルゴリズムの最適化

計算機以前から存在し、また計算機とともに更なる発展を遂げた数値計算には無数の計算手法が存在します。主要な問題に対しては典型的な解き方が定まっているものの、現在でもアルゴリズムの改善が行われています。ここでは代表的な問題について主な手法を紹介します。

  • 微分方程式 物理で頻出する微分方程式は、基本的に差分化して解くことになります。差分化とは、例えば関数fの微分dfdxがあった時に、fi+1fiΔxのように、fの離散的なサンプル点での値で近似する操作です。極論すれば、微分方程式の数値計算はこの近似をいかに抑えこむかということに尽きます。大きく陽解法と陰解法の2本があって、陰解法の方が誤差が発散しないなど安定なのですが、連立方程式に帰着してそのままでは計算が困難なことが多く、次で述べる行列計算の助けを借りることになります。
  • 行列計算 差分法の陰解法から現れる連立方程式が一次であれば、これは逆行列を求めることに等価ですし、量子系で頻出の固有状態を求める問題は、同じく差分化を通して固有値問題に帰着します。このように行列計算は数値計算におけるサブルーチンとしての色が強く、あちこちで頻出する重要な要素です。 連立一次方程式には専らLU法が使われますが、固有値問題ではQR法やヤコビ法、べき乗法など複数の手法が使い分けられています。また疎行列は密行列と違うアルゴリズムを選ぶことで無駄がなくなり、大きく高速化できます。
  • 乱数 統計力学や多体量子系で扱うような自由度の莫大な空間では、精度を上げようと迂闊に系を大きくすると、たちまち計算量が指数的に爆発します[5]。このような系では全体を調べるのを諦め、乱択アルゴリズムから平均的な振る舞いを見るモンテカルロシミュレーションがよく使われます。前回の五月祭で統計物理班が演示していたMCMC法(同記事)もその一種です。また、当班の最終目標でもある格子QCD(格子量子色力学)もモンテカルロ法を用いています。

計算資源の活用

問題の形式やアルゴリズムの改善にも限界があり、本質的に大きな問題を解くには計算資源を増やす他ありません。かつての計算速度向上は専らクロック周波数の(指数的)増大によって担われていましたが、これが2000年頃に頭打ちになって以降、大規模な計算資源では並列計算ユニットが使われています[6]。近年ではGPGPUが使われることも多いですし、またメモリキャッシュやパイプライン処理などの最適化技術も速度に影響してきます[7]。こうした高速化技術の多くは適切な実装によって初めて活きてくるもので、実装がアーキテクチャを考慮しているか否かで計算速度が大きく変わってきます。

近年では高水準言語の数値計算ライブラリも充実してきており、詳細な実装に踏み込まずとも計算資源の恩恵を受けられるようになってきていますが、低レイヤの知識を持っていることは計算機をよりよく活用する実装を書くには欠かせないでしょう。

班について

計算物理班は今年新設の班です。PhyicsLab. 2017にもあったらしく、7年ぶりの復活ということになります。

普段の活動

色々な系のシミュレーションを通して数値計算の手法を学んでいます。また型理論ゼミのような情報数学に近しい領域のゼミもあります。また内部Discordやホームページ整備等を担当するWeb班のメンバーは計算物理班のメンバーから構成されており、事実上の裏方担当でもあります。

五月祭

五月祭ではシミュレーションの展示とポスター解説を予定しています。計算の実行場所として、Web上、パソコン上、物理学科計算サーバ上を考えています。


  1. コンピュータ。 ↩︎

  2. 原因として、観測装置の影響・粒子数の多さ・歪な外場などが挙げられる。 ↩︎

  3. フォン・ノイマンの安定性解析など。 ↩︎

  4. この辺りは数値計算と共通。 ↩︎ ↩︎

  5. 例:数え上げお姉さん↩︎

  6. ちょっとマサカリが飛んできそうで怖い。 ↩︎

  7. 行列行列積のループ処理などは顕著な例だろう。 ↩︎