分岐図
定義
動力学系でパラメーターの変化によって生じる変化、バイファーケーションを表した図をバイファーケーション・ダイアグラムbifurcation Diagramと呼ぶ。
例1
例としてロジスティック・ファミリー を考えると、パラメーターの変化により十分に大きいに対しての値は、次のバイファーケーション・ダイアグラムの黒い範囲内に含まれると予想できる。の時は一本の線で表されておりは一つの固定点に留まり、の時は二本の線があるためはそのうちの一つの値になるだろう。そのうちの一つの値になるということは、が周期-オービットに含まれているということだ。そしてくらいから周期-オービットが現れる。
このセンスで、この図を分岐図と呼ぶことは妥当に見える。一方では黒い範囲が徐々に広がりではからまでの全ての値を取りうるようになる。これはロジスティック・マップがカオスであることを視覚的かつ実験的に示している。この意味で、どんな動力学系を理解しようとする時、そのバイファーケーション・ダイアグラムを見ることができるというのは非常に良いことである。
の時はある程度理解可能なパターンがあったが、その後急にカオスになり、再び周期的になり、またカオスになる。このような現象をクライシスcrisisと呼ぶ。一方で近くの周期的な区間を周期的ウィンドウperiodic windowと呼ぶ。
コード
以下はロジスティック・ファミリーのバイファーケーション・ダイアグラムを描くJuliaのコードだ。
function logistic(r, x)
return r * x * (1 - x)
end
logistic(4, 0.5)
function iter(f, p, x0, n)
x = [x0]
for t in 1:n
push!(x, f(p, x[end]))
end
return x
end
traj = iter(logistic, 3, 0.5, 100)
using Plots, LaTeXStrings
plot(traj)
function bifurcation(h)
xaxis_ = []
yaxis_ = []
for r ∈ 1:h:4
preiterated = iter(logistic, r, 0.5, 200)[101:end]
xaxis_ = [xaxis_; fill(r, length(preiterated))]
yaxis_ = [yaxis_; preiterated]
end
return xaxis_, yaxis_
end
# @time xaxis, yaxis = bifurcation(0.01)
# diagram = scatter(xaxis, yaxis, markersize = 0.1, markeralpha = 0.5, legend = false, xlims = (1, 4), ylims = (0, 1))
@time xaxis, yaxis = bifurcation(0.001)
diagram = scatter(xaxis, yaxis,
xlabel = L"a", ylabel = L"x",
markersize = 0.1, markeralpha = 0.5, legend = false, xlims = (1, 4), ylims = (0, 1));
png(diagram, "bifurcation.png")
Yorke. (1996). CHAOS: An Introduction to Dynamical Systems: p19. ↩︎