最初の大規模計算
Richard Hammingの最初の大規模シミュレーション:1945年 Los Alamos。目標 — 実用的な原爆の設計。
シミュレーションを必要にした問題: 小規模実験は存在しない。臨界質量は二項的である。核分裂性物質が臨界質量を超え、連鎖反応が伝播するか、またはしないかのいずれかである。スケールダウン版を実行することはできない。
球形爆縮設計
1つの設計は球形対称を使用した — 爆縮。エンジニアは材料を多くの同心円殻に分割した。各殻について、両側の面にかかる力の方程式と、圧力と密度を関連付ける状態方程式を書いた。
時間は10⁻⁸秒の間隔に離散化された — 'shakes'と呼ばれる('a shake of a lamb's tail'から)。各shakeで、計算は進む:各殻はどこに移動するか?どのような力が作用するか?
シミュレーションを強制する3つの条件
Hammingはシミュレーションが物理実験に取って代わる状況を特定した:
1. 不可能な実験 — 臨界質量はサブスケールでテストできない
2. 危険な実験 — キャリブレーションデータのために爆弾を爆発させることはできない
3. コストが高すぎるか遅すぎる — 大気ブロック、天気予報、ミサイル軌跡
目標:等価結果を生成すること、物理プロセスを正確に複製することではない。シミュレーションは原子単位の現実と一致する必要はない。設計が必要とする精度内で同じ観測可能な結果を生成する必要がある。
等価結果
Los Alamosでのhammingの重要な洞察:状態方程式データは不正確だった。圧力密度関係は、高圧ラボ、地震推定、星の核モデルから来た — すべて重大な不確実性を伴う。
エンジニアはそれらの曲線を小数点以下3桁まで読み、次に5桁の表にした。一見、ガベージイン。
しかし、爆弾の設計は機能した。
なぜか?計算が隣接する殻の値の二階差分を取ったから。状態方程式の局所誤差は、殻が曲線を横切る歴史全体で平均化された。重要だったのは:状態方程式の曲率、そして平均的にのみ。
計算内のフィードバックが不正確な入力を補った。
反復コア
Hammingは大規模シミュレーションの普遍的な構造的特性を特定した:高度に反復的な内部ループ。
Los Alamosでは:同じ力の方程式がすべての殻ですべての時間ステップで実行された。1つの殻のコードは数千回実行された。その反復構造がなければ、プログラミングコストは法外だったでしょう。
この原理は一般化する:天気予報は大気をブロックに分ける;同じ物理方程式が各ブロックを更新する。ミサイルシミュレーションは各時間増分で同じ軌跡方程式をステップする。トランジスタ設計は各空間グリッドポイントで同じ場の方程式を計算する。
Hammingのアドバイス: 提案されたシミュレーションの反復的な部分を早期に探す。シミュレーションを反復を利用する形にキャストする。タイトな内部ループを持たないシミュレーションはおそらく構造が悪い。
専門知識をハード前提条件として
Hammingは彼が非交渉と見なした規則に繰り返し戻った:領域専門家のみが何が重要かを知ることができる。
シミュレーション専門家はコードを構造化し、数値方法を選択し、反復的なループをデバッグできます。しかし、領域の物理学、化学、または工学に精通している人だけが決定できます:
- モデルに現れなければならない効果
- 安全に省略できる効果
- 異常な結果が物理的真実を示すか、モデルエラーを示すか
Los Alamosでは、Hammingはコンピューティング専門家だった。物理学者は領域専門家だった。どちらも互いに代替することはできなかった。
ジャーゴンを障壁 & ツールとして
Hammingの最も強い運用規則の1つ:シミュレートしている領域のジャーゴンを学ぶ。
彼の話:28の連立微分方程式を持つ海軍傍受問題。彼は提案者——物理学者の友人——がコンピュテーション前に彼と一緒に二進機械コードのすべての行をたどることを主張した。
途中で、物理学者は言った:'Dick、それはフィン制限です、電圧制限ではありません。'同じ数学記号、同じ正式な方程式 — しかし2つの異なる物理的解釈、本質的に異なる結果を生む。
レッスン:両者は数学を理解した。どちらも通常の意味でコミュニケーション障害を起こさなかった。しかし、制限操作の物理的意味は方程式のみによって不足していた。
ウォークスルーがなければ、シミュレーションは間違った解釈で実行されたでしょう。実行時エラーなし。明らかに悪い出力なし。重要な問題に対する単なる間違った答え。
安定 対 不安定な問題
Hammingはシミュレーションがよく処理する問題とシミュレーションがほぼ不可能な問題の間に鮮い線を引いた。
原子爆弾: 進行中の殻軌跡の小さな違いは最終収量に大きく影響しなかった。シミュレーションは安定していた — 中間ステップでのエラーは増幅されなかった。
天気予報: 反対。小さな摂動 — '日本の蝶が翅をばたばたさせるかどうか' — 原則的に、暴風雨が大陸を襲うかどうかを決定できます。初期条件への感度は、日日の天気シミュレーションを短い地平線を超えて信頼できなくします。
両方の問題は同じ数学的構造を使用します:空間をセルに離散化し、時間をステップに離散化し、前進します。違いは方向フィールドにあります — 軌道からの小さな偏差が時間経過とともに成長(不安定)または縮小(安定)するかどうか。
天気は両方を示します:短期不安定性(日日カオス)、長期安定性(季節が丸め込む)、および非常に長期的不安定性(氷河期)。
Hammingの規則: シミュレーションを開始する前に、問題が基本的に安定しているか不安定かを調べます。不安定な場合、不安定性が必要な答えに根本的なものか、スケールまたは境界条件の成果物かを決定します。数ヶ月の作業に投資した後、これを発見しないでください。
最初に単純、後で完全
新しいシミュレーションにアプローチするためのHammingの好みの方法:
1. シンプルに始める — メインの効果のみを含める。支配的な振る舞いを正しく取得する。
2. 早期に洞察を得る — 単純なシミュレーションは、完全な詳細に投資する前に問題の構造を明らかにします。
3. 完全性に向かって進化する — 二次的な効果を段階的に追加し、各追加をより単純なベースラインに対して検証します。
彼はこれをNikeミサイルプロジェクトで説明しました。彼の初期シミュレーションは単純な指数大気モデルを使用しました。後のシミュレーションでは、高度に依存する密度プロファイル、横風項、および非線形ドラッグを追加しました。しかし、初期の洞察 — 垂直発射は密集した下層大気でドラッグを減らします;より大きな翼は後期操縦性よりも多くの速度をコストします — 単純なモデルから来ました。
警告: 最後に、完全なシミュレーションを使用して設計を凍結します。単純なシミュレーションは洞察を得る;完全なシミュレーションはコミットメントを得る。