⛳
200個のボール変動シミュレーションをJuliaで書く
中川毅(著) 人類と気候の10万年史 過去に何が起きたのか、これから何が起こるのか (ブルーバックス) という本を連休中に楽しく読んだので,作中に出てくるシミュレーションをやってみようと思います.
設定
-
個のボール (本ではn )n=200 - パラメータ
(作中では明示されていない)a, \epsilon - 時刻
のときのボールの色は時刻t で次のように変化するt+1
Juliaで実装する
まずは計算の部分です.
using Statistics
# 更新部分
f(x; a=1) = 1 .- a * x .^ 2
update(x; a=1, e=0.5) = (1 - e) .* f(x, a=a) .+ (1 - e) * mean(f(x, a=a))
次に描画する部分です.本の通り色の平均値をプロットすることにします
# 描画部分
max_iter = 1000
colors = rand(Float32, n);
results = zeros(max_iter + 1);
results[1] = mean(colors)
for i in 1:max_iter
colors = update(colors, a=a, e=e)
results[i + 1] = mean(colors)
end
plot(1:max_iter+1, results, marker=:circle, markersize=2, color=:blue, size=(800, 400))
適当に
パラメータを探す
本によると
- 安定した状態と乱雑な状態がくり返す
- 2つの相が切り替わるタイミングには法則性が見られない
といった特徴的な系列になるはずですが,うまく再現できていません.
Discussion