反応拡散系で遊んでみた。
Coding Challenge #13: Reaction Diffusion Algorithm in p5.js - YouTube:
を元に実装してみた。
反応拡散系のシミュレーション
Reaction-Diffusion Tutorialが非常にわかりやすい:
- AとBの2つの化学物質がある
- Aは\(feed\)率で増えていく
- ただしAが増えすぎると餌が減る
- 反応: 2つのBは1つのAを食料として、1つのBに変換する
- Bは\(kill\)率で死んでいく
- 拡散: AはBよりも拡散速度が速い
これをグリッド単位でシミュレート:
$$ A^\prime = A + (D_A \nabla^2 A - AB^2 + f(1 - A)) \Delta t \\ B^\prime = B + (D_B \nabla^2 B + AB^2 - (k + f)B) \Delta t $$
- ラプラシアンが拡散、(\(D_A\) と \(D_B\) が係数)
- \(f\) がフィード係数
- \(k\) がキル係数
- \(AB^2\)で、A1つとB2つが出合う率、をAから引き、Bに足す
実行
色んなパターンがあって面白い。
参考
- キリン柄の作り方がよくわからない…