ローレンツ(Lorenz)のカオス(chaos)
「カオス」というのはギリシャ語で「混沌」「無秩序」といった意味です
が、現代の数学・物理では、ある限定された意味を持っています。
時間発展問題で、変数のとる値が有限の範囲に限られるにもかかわらず、
初期値の微小な違いが、決定的な違いに拡大してしまう状況をさします。
カオスの概念をつくる上で重要だった研究の一つは、理論気象学者
ローレンツ(Lorenz)による1963年の論文です。
これは、天気予報の基礎研究のなかから生まれた
もので、数値天気予報の限界を考える上でも
重要な意味をもっています。
この話題については、ローレンツ先生自身による解説書があります。
- Lorenz, E.N., 1993: The Essense of Chaos.
University of Washington Press, 227 pp.
- (日本語版)杉山 勝, 杉山 智子 訳, 1997:
ローレンツ カオスのエッセンス。共立出版, 232 pp.
公開講座の講義録をもとにしたもので、
数式は少なく、高校卒程度の予備知識で読めるようにくふう
された本です。
発表当時は注目されなかったものの、その後カオス理論の発端として有名になった
- Lorenz, E.N., 1963: Deterministic nonperiodic flow.
Journal of Atmospheric Sciences, 20, 130 -- 141
の論文で扱っている問題は、
3つの変数 X, Y, Zが連立された、次のような時間発展問題(σ, r, bは定数)です。
dX / dt = - σ X + σ y
dY / dt = - X Z + r X - Y
dZ / dt = X Y - b Z
これを計算するプログラムを、
- 下條隆嗣, 1992: カオス力学入門。近代科学社、267 pp.
の例文「LOREN-JP.BAS」を参考に組んでみました。
lorenz1.p,
lorenz1.f,
lorenz2.p,
lorenz2.f
(今のところPascalとFortranだけ)です。
ただし、下條先生のプログラムはMS-DOS上のBasicで動くもので、
時間発展の計算だけでなく、図形表示やスペクトル解析まで
一体にしたプログラムですが、
わたしは、X Window上でgnuplotなどが使えることを想定し、
計算結果を標準出力に書き出すだけにしました。
時間差分はルンゲ・クッタ法を使っています。
lorenz1.pは時間刻みを一定にしたもの、lorenz2.pは下條先生の
例文で採用している時間刻みの自動調節を入れたものです。
(スペクトル解析のプログラムは、Fortranだけですが、
別記事で紹介する予定です。)
結果を、横軸に時間、縦軸にX, Y, Zのそれぞれをとってみたり、
横軸にY、縦軸にZのように変数どうしの関係をみてみたりすることが
できます。実際「カオス力学入門」の2.14節にある図と同じ数値を入れて
やってみると、結果は定性的には一致するのですが、時間発展の中で
いつ0以下になるかといった点では一致しません。
おそらく、どちらの計算が正しいというものではなく、
「初期値の微小な差に敏感」な問題であるため、
DOS上のBasicの単精度に対してUnix(DEC)上のPascalの倍精度を
使ったことによる、まるめ誤差の違いが拡大されてしまっているのだと
思います。
ページ公開 2002年 (微修正 2015-06-13)
増田 耕一 (MASUDA Kooiti)
[目次へ]