テーマ3: ロジスティックマップ

[Up] [Repository]

目的

生物の個体数をモデル化し、カオスを実感する。

モデル

ある生物を考える。この生物は死ぬ直前に子供を生むが、栄養状態が良いとたくさん子供を生めるが、栄養状態が悪いと子供を産めないとする。当然、個体数が多ければ多いほどエサの取り合いになり、子供を生むための栄養を蓄えることができない。逆に、個体数が少なければ競争も少なく、子供もたくさん産めるだろう。この生物の第\(i\)世代における生物の個体数を\(N_i\)とする時、次世代の個体数\(N_{i+1}\)を以下のように表現しよう。

\[ N_{i+1} = a \left( 1 - \frac{N_i}{N_\mathrm{max}}\right) N_i \]

これは、「前世代で個体数が多いと子供が作れない」「個体数が少ないとたくさん子供を作ることができる」ことを表現した式だ。\(N_\mathrm{max}\)は、この環境が許す最大の個体数で、この個体数に達すると子供を作ることができない。さて、\(n_i = N_i/N_\mathrm{max}\)という変数変換を考えよう。\(n_i\)は「環境が許す最大の個体数を1とした場合の、現在の個体数の割合」を表し、0から1までの値をとる。この変数変換により、先程の式は

\[ n_{i+1} = a (1 - n_i) n_i \]

と書き直される。この式をロジスティックマップ(Logistic map)と呼ぶ。

\(a\)は生物にとっての環境の快適度を表し、小さいと生物はあまり増えられず、大きいと生物は増えやすい。

さて、この式は「個体数が多いと子供が少なくなる」「個体数が少ないと子供が増える」のであるから、時間がたつと「ちょうど良い」個体数に落ち着くと思われる。もし個体数が落ち着いたら\(n_{i+1} = n_i\)なので、これを\(n_i\)について解くと、

\[ n_i = 1 - \frac{1}{a} \]

となる。このように、世代や時間によらない解を定常解と呼ぶ。\(a\)が1に近づくと個体数が0に、\(a\)が大きいほど、環境が許す最大の個体数に近づく。シミュレーションにより、この振る舞いを確認してみよう。

プログラム

最初のセル

最初のセルはライブラリのインポートを行う。

import matplotlib.pyplot as plt

実行しておくことを忘れないように。

2番目のセル

最初にa = 1.0の時にどうなるかを見てみよう。以下を入力、実行してみよう。個体数はnで表現し、最初はn = 0.01、つまり環境が許す最大値の1%の生物がいる状態からスタートする。

n = 0.01
a = 1.0
y = []
for i in range(100):
    y.append(n)
    n = a * n * (1.0 - n)
plt.ylim(0,1)
plt.plot(y)

個体数が0に張り付いたようなグラフが得られるはずだ。これは先程求めた定常解と一致する。

次に\(a=2.0\)に書き換えて、もう一度実行してみよう。値は理論値である\(0.5\)になるだろうか。

では次に\(a=3.0\)ではどうだろう。\(a=3.3\)では?

3番目のセル

a_s = 1.0
a_e = 3.3
N = 1000
x = []
y = []
for i in range(N):
    a = a_s + (a_e - a_s)/N*i
    n = 0.1
    for i in range(1000):
        n = a * n * (1.0 - n)
        if i > 900:
            x.append(a)
            y.append(n)
plt.scatter(x,y, s=0.01)

これを実行すると、パラメータaに対して、最終的に個体数がどこに落ち着くかをプロットするものだ。

カオス

物理は、極言すれば「方程式を解く」学問だ。方程式を「解く」とは、現在の情報が与えられた時に、任意の時間や場所での系の振る舞いがわかることだ。例えば我々は次にいつどこで日食や月食が起きるかがわかる。星はニュートンの運動方程式に従って動くことがわかっているため、運動方程式を解くことで太陽や地球、月の将来の位置を予測することができるためだ。このように自分が振る舞いを知りたい系の状態を記述する式を支配方程式と呼ぶ。ほとんどの場合、支配方程式は微分方程式で記述される。微分方程式を厳密に解くことは難しいが、数値計算で近似的に解くことはできる。支配方程式さえわかってしまえば、あとは欲しいだけの精度で将来の予測ができる、もう世の中は「わかった」ので、物理はもうあまりやることが残っていない、そう思われた時期があった。

ロジスティック・マップは、極めて簡単な一次元の差分方程式だ。しかし、その長期的な振る舞いを予測するのは難しい。\(a=2\)の場合、定常解は\(n_i=1/2\)だ。実際に、十分時間が経過したら、最初にどれだけ生物がいたかなど関係なく\(n_i=1/2\)に収束する。しかし、\(a=3\)を超えた瞬間、その振る舞いは突如として乱れだす。個体数は振動しはじめ、定常解に収束しなくなる。\(a=3.8\)のあたりでは完全に不規則に動くため、\(n_1=0.01\)でスタートした時\(n_{1000}\)はどのくらいですか?と聞かれても全く予想できない。また、\(n_1=0.010001\)と、初期値が少しずれただけでも、あとの振る舞いががらっと変わってしまう。これを初期値鋭敏性と呼ぶ。これらの性質をもつ世界をカオス(Chaos)と呼ぶ。ロジスティック・マップは、カオスを引き起こす最も単純なモデルの一つだ。

カオスにより、「非常に単純に見える式」が、「非常に複雑な結果」を生み出すことがわかった。カオスでは、たとえ支配方程式が完璧にわかっていても、系の振る舞いを予想することができない。初期値鋭敏性により、少しでも初期値の見積もりにずれがあると、あとで大きなずれになってしまうからだ。初期値鋭敏性は、例えば天気の長期予報を困難にする。例えば、あるところで蝶が羽ばたいた、たったそれだけのことが、遠くで重大な気象変化につながるかもしれない。これをバタフライ・エフェクトと呼ぶ。

カオスにより、我々の「世界に対する見方」が大きく変わった。「非常に単純に見える式」が、「非常に複雑な結果」を生み出すのなら、「非常に複雑に見える現象」の裏に「非常に簡単な式」が隠れているかもしれない。物理学者はその可能性を求め、今日も現象の裏に潜む普遍性を追究するのである。