
ロジスティック写像で「バタフライ効果」を実測したら、r=3.9では1e-8の差が0.498/stepで爆発し、r=2.8では起きなかった
「バタフライ効果」という言葉はよく聞く。ブラジルで1匹の蝶が羽ばたくと、テキサスで竜巻が起きるかもしれない——カオス理論の入門でほぼ必ず出てくる比喩だ。ただ、この言葉はしばしば「小さな違いはいつか必ず大きな違いになる」という、やや大げさな一般論として一人歩きしている気がする。
実際のところ、初期値のわずかな差が指数関数的に拡大するというのは、特定の条件下でだけ起きる現象のはずだ。今回は、カオスの入門としてよく使われる最も単純な力学系——ロジスティック写像を使って、この「わずかな差が拡大するかどうか」を実際に数値実験で測ってみることにした。
ロジスティック写像: たった1行の式
ロジスティック写像は、次の漸化式で定義される。
は0から1の間の値、 は2から4の間で選ぶパラメータだ。もともとは個体数の増減(繁殖と環境収容力の限界)をモデル化するために考えられた式らしいが、今ではカオス理論の「これ以上削れない最小構成」として扱われることが多い。
このたった1行の式が、 の値によってまったく違う顔を見せる。同じ初期値 から出発して、・・ の3つで軌道を追ってみた。

- r=2.8: 数回の振動の後、付近の1点にぴったり収束する
- r=3.2: 2つの値(0.513と0.799)を永遠に行ったり来たりする、2周期の振動になる
- r=3.9: 60回反復しても一切収束せず、0.1から0.97まで不規則に暴れ続ける
同じ式、同じ出発点なのに、 を2.8→3.2→3.9と動かすだけで、挙動が「収束」→「振動」→「カオス」へと質的に変わっていく。
分岐図: rを増やすと何が起きているか一望する
3点だけでなく、 を2.4から4.0まで細かく動かしながら、長期的に(最初の500回の過渡状態を捨てた後の200回分)がどの値に落ち着くかをプロットすると、カオス理論で最も有名な図の1つ、分岐図が現れる。

- で最初の分岐が起き、1点への収束から2周期振動に切り替わる(さっきのがここに当たる)
- そこから2→4→8→16…と、周期が倍になる分岐がどんどん間隔を狭めながら連続する(この「間隔が縮む速さの比」が有名なファイゲンバウム定数に対応する)
- で無数の分岐が積み重なり、線が面のように散らばるカオス領域に突入する(はこの中)
- カオス領域の中にも、のように**規則性が一時的に戻る「窓」**が挟まっている
この図を見ると、「カオス」は特別な例外ではなく、パラメータを連続的に動かした結果、分岐の果てに出現する領域の1つだということがよく分かる。を1本のスライダーで動かして、軌道がこの図のどのあたりに対応するのか実際に確かめられるようにしたのが下のインタラクティブ版だ。
付近でスライダーを動かすと1本の線が急に2本の振動に割れ、を超えたあたりから軌道がとたんに不規則になるのが、実際に手を動かすとよく分かる。
本題: 1e-8の差は、rによって「爆発する」か「消える」か
ここからが本題だ。バタフライ効果の核心は「初期値のごくわずかな違いが、時間とともに指数関数的に拡大する」という性質にある。これを実際に測ってみる。
やり方はシンプルだ。ほぼ同じだが1e-8だけ違う2つの初期値、とから、それぞれ独立にロジスティック写像を反復する。2つの軌道の差 を、 に対して片対数(縦軸log)でプロットする。指数関数的に拡大しているなら、この片対数グラフでは直線になるはずだ。
これを、カオス領域のと、1点に収束する安定領域のの両方でやってみた。

見ての通り、運命は正反対だった。
- r=3.9(カオス域): 1e-8の差が、ジグザグしながらもはっきり右肩上がりに拡大し、30ステップほどで初期値の1000万倍(0.1オーダー)に達する。その後は自体が0〜1の範囲に収まっているせいで、差もそこで頭打ちになる(飽和)
- r=2.8(安定域): 同じ1e-8の差が、きれいな直線を描いて縮み続け、20ステップほどでグラフ下端の1e-10を割って見えなくなる。その先も同じペースで縮み続け、生の値を確認すると60ステップで1e-14前後、80ステップでほぼdouble精度の限界(2.2e-16)に達していた
経験的な発散率を測る: 0.284/step? それとも0.498/step?
グラフに引いた点線は、差がまだ飽和レベル(0.1)に達していない点だけを使って最小二乗でフィットした直線だ。この傾きから、経験的な発散率(1ステップあたりの自然対数の増加量、いわゆるリアプノフ指数)を読み取れる。
カオス域(r=3.9)のフィット区間: n=0〜60 (36点)
フィットで得た経験的成長率(自然対数/step) = 0.28387
安定域(r=2.8)のフィット区間: n=0〜60 (61点)
フィットで得た経験的成長率(自然対数/step) = -0.22627
ここで、どちらも「n=0〜60」なのに片方は36点・もう片方は61点という数の非対称に気づいた方もいると思う。カオス側のフィットは、61点全部ではなく差がまだ飽和レベル(0.1)に達していない点だけを使っている。差はで初めて0.1を超えるが、その後も0〜1の範囲で暴れながら時々0.1を下回るので、〜の連続区間に加えてのような「たまたま一時的に下がった点」も拾われて、合計36点になる。一方側は飽和が起きず、ただ単調に縮んでいくだけなので、61点全部をそのまま使えている。
側のは、後で説明する理論値とほぼ完全に一致した。ところが側のは、実はかなり怪しい数字だった。
理由は、生の差の値を見ると分かる。
n= 0: 1.00e-08
n= 5: 2.84e-07
n= 6: 1.46e-07 ← 一瞬減っている
n=10: 5.71e-07
n=15: 1.57e-05
n=20: 3.82e-04
n=25: 8.02e-03
n=29: 1.16e-01
からにかけて、差はむしろ縮んでいる。カオス領域だからといって、毎ステップ必ず拡大するわけではない。ある瞬間は引き伸ばされ、次の瞬間は押し縮められる、という局所的な伸び縮みを繰り返しながら、平均としてだけ拡大していく。1本の軌道・60ステップというごく短いサンプルに素朴に直線を当てはめると、このバースト的なノイズに引っ張られて、本当の発散率より低めの数字が出てしまう。
そこで、写像の微分 の対数を、過渡状態を除いた後10万ステップにわたって平均する、より正確な方法(リアプノフ指数の定義そのもの)でも計算し直した。
直接計算したリアプノフ指数(60ステップ平均): 0.56365
直接計算したリアプノフ指数(transient除去後10万ステップ平均): 0.49799
10万ステップの平均だと0.498/stepに収束する。これが における「本当の」発散率と言っていい数字だ。ちなみによく引用される教科書的な値は のときの /stepだが、今回測った はそれとは別物の、この固有の値になる。「カオスの発散率」という単一の数字があるわけではなく、rごとに違う数字が実際に出るということも、手を動かして初めて実感できた。
一方の は、10万ステップ平均でもと、60ステップの素朴なフィット()からほぼ動かない。安定な1点の近くでは、写像の微分 が一定で、という理論値ぴったりに落ち着く。滑らかで単調な減衰にはノイズがないので、短いサンプルでもきれいにフィットできる、ということでもある。
2つの軌道が剥がれていく様子
差が拡大していく様子を、数字だけでなく軌道そのものでも見ておく。で、との2本の軌道を同時にプロットしながら反復を進めるアニメーションを作った。

最初の15ステップほどは、2本の線は文字通り1本にしか見えない。1e-8という差は、目で見て分かるようなものでは到底ない。それが20ステップを過ぎたあたりから急にずれ始め、30ステップを超えると、もう「わずかに違う2つの初期値」には見えない、赤の他人同士の軌道になっている。
手を動かして意外だったこと
一番意外だったのは、「カオスだから初期値の差はいつも拡大する」という理解の粗さに、自分で気づけたことだ。の生データを見ると、1ステップ単位では縮む瞬間もちゃんとある。平均としては拡大するが、瞬間瞬間は伸び縮みを繰り返す——この解像度で見て初めて、リアプノフ指数が「瞬間の傾き」ではなく「長時間平均」として定義されている理由に納得できた。
そしてもう1つ、側の実験は、地味だけれど今回の実験全体の中で一番大事な部分だったと思う。同じ1e-8の差、同じ写像の式を使って、パラメータを1つ変えただけで、「拡大して爆発する」と「縮んで消える」がきれいに入れ替わった。バタフライ効果は、この式そのものが持つ普遍的な性質ではなく、その式が今どのパラメータ・どの領域で動いているかに完全に依存する、局所的な性質だった。
「小さな選択が人生を左右する」も、たぶん同じ話だ
「小さな選択の積み重ねが、後の人生を大きく左右する」というのは、わりとよく聞く話だ。今回の実験を見ていて、これは半分正しくて、半分は言い過ぎなんだろうなと思った。
のような「カオス的なレジーム」に自分が置かれているときは、確かに小さな選択の違いが後々まで響く。どの人と最初に出会ったか、どの本をたまたま手に取ったか、そういう小さな偶然が、数年後にはまったく違う人生の軌道を作っているように見える瞬間はある。
でものような「安定なレジーム」では、事情はまったく違う。多少の選択のブレは、時間とともに勝手に均され、収束していく。今日何を食べるか、今週末どちらの店に行くか——こういう選択の多くは、実は「安定領域」の話であって、後から振り返ってもほとんど何の分岐点にもなっていない。
厄介なのは、自分が今どちらのレジームにいるのか、渦中では判別しづらいことだ。実験のようにの値を外から指定できるわけではない。それでも、「この選択は大きく響くかもしれない」という緊張感をあらゆる選択に均等に配ってしまうと、ただ疲れるだけだと思う。むしろ、「これは収束していくタイプの選択だ」と見切りをつけて力を抜くことと、「これは分岐点かもしれない」と踏みとどまって考えることを、経験的に選り分けていく方が現実的なんだろう。バタフライ効果は、どこでも起きているわけではない——それを実験で確かめられたのは、思っていたより収穫だった。
まとめ
- ロジスティック写像 で、(1点収束)・(2周期振動)・(カオス)の3つの挙動を確認し、分岐図で全体像を一望した
- で初期値をだけずらした2軌道は、30ステップほどで差が10^7倍(0.1オーダー)まで拡大した。長時間平均で求めた経験的な発散率(リアプノフ指数)は約0.498/stepで、よく引用されるのとは異なる、この固有の実測値だった
- 60ステップの短いサンプルに素朴に直線をフィットすると0.284/stepとかなり低く出た。原因は瞬間ごとの伸び縮みのバースト性で、リアプノフ指数が長時間平均として定義される理由を実感した
- 同じの差を(安定な1点への収束域)で試すと、拡大せずに縮み続け、20ステップほどで1e-10を割り、80ステップでほぼdouble精度の限界(2.2e-16)まで消えた。発散率は理論値とほぼ一致した
- 初期値鋭敏性(バタフライ効果)は力学系そのものの普遍的な性質ではなく、パラメータが作る「今どのレジームにいるか」に依存する局所的な性質だった


