← sim_game

Entropy Lab

技術解説 遊び方
ドラッグで壁を塗る(右クリックで消す / Shiftで直線)

技術解説: Entropy Lab のシミュレーション

ここで使っているモデルと、そこから見えるエントロピーの考え方の解説です。

1. 何をシミュレーションしているか

箱の中に 1000個の質点が入っています。粒子どうしは衝突しない(理想気体)ので、1粒子ずつ独立に動きます。速さはすべて同じ(2セル/時間)で、時間刻みは 0.25、1ステップで 0.5 セル進みます(壁のセルより小さいので、すり抜けは起きません)。壁にぶつかると向きだけが変わります。動くのは粒子、壁は格子(セル)で、プレイヤーはセルを塗って壁を作ります。

初期状態は、左端の小さな領域から、向きがほぼ揃った(ばらつき約 ±0.04 rad)ビームです。位置も向きもほぼ1点に集中した、とても秩序のある状態です。

2. 壁での反射

セルの階段状の境界のままだと、反射は x 軸・y 軸方向にしか起きず、粒子は4種類の向きしか取れません。そこで、壁セルの外向き法線を、周囲(半径3セル、重み 1/d²)の壁の質量の重心から離れる向きとして求めます。円盤状に塗れば丸い鏡、斜めに塗れば45°の鏡として働きます。孤立した1セルは、セルの中心から放射状の法線を使います。

鏡 (MIRROR): v' = v − 2 (v·n) n … 鏡面反射(決定論的) ざらざら (ROUGH): 出射角 φ は法線から測り sin φ が [−1,1] で一様 → 出射方向の確率密度 ∝ cos φ … ランベルトの余弦則

ざらざらの壁は、入射方向の情報を捨てて、決まった確率分布から出射方向を引き直します。これは「壁が熱浴(温度をもつ環境)として働く」ことの最も簡単な模型です。乱数は固定シード(mulberry32)なので、同じ設計は毎回同じ結果になります。

3. エントロピーの数え方(粗視化)

箱を 6×4 の位置のマスに分け、進行方向を 8 つの角度に分けます。合計 192 個の「箱(ビン)」です。各ビンにいる粒子の割合を p として、次を計算します。

S = − Σ p ln p (ギブス/シャノンのエントロピー) S は 「粒子がどれだけ多くのビンに散らばっているか」の目安 ボルツマン: S = k ln W は、全ビンが等確率のときの特別な場合

表示している「エントロピー %」は、S を Seq で割ったものです。Seq は、平衡状態(空いているセルに一様、向きも一様)から 1000 粒子を引いたときの S の平均値で、有限個の粒子で測ることによる偏り(ビンを埋め切れない分)を含みます。したがって 100% が「完全に混ざった」状態です(ln 192 ≈ 5.26 に対し、Seq ≈ 5.16)。ゲームの時間は「S/Seq が最初に 90% に達した時刻」で、1時間単位ごとに測っています。

4. なぜ「鏡だけ」でエントロピーが増えるのか

5. ざらざらの壁と不可逆性

ざらざらの壁では、出射方向が入射方向と無関係なので、情報が失われます(散逸)。ミクロな乱数が入るので、時間反転しても元には戻れません。エントロピーの増大は、鏡では「見かけの」増大、ざらざらの壁では「本当の」増大です。

6. 時間反転ボタンについて

鏡だけの世界は、全粒子の速度を反転すれば来た道を逆にたどるはずです(ロシュミットの可逆性のパラドックス)。ただし、このシミュレーションは離散的なステップと、格子から推定した法線で反射を計算しているため、反転して走らせると厳密には元に戻りません(試すと、カオスによる誤差の増幅で途中までしか戻りません)。そこで、鏡だけの設計では、実行中に記録した状態(0.5時間ごと)を逆再生しています。これは「理想的な精度なら起きること」を見せるものです。ざらざらの壁があるときは、実際に速度を反転して通常のシミュレーションを続けるので、元には戻りません。

7. 限界と注意

遊び方