ローレンツ(Lorenz)のカオス(chaos)

「カオス」というのはギリシャ語で「混沌」「無秩序」といった意味です が、現代の数学・物理では、ある限定された意味を持っています。 時間発展問題で、変数のとる値が有限の範囲に限られるにもかかわらず、 初期値の微小な違いが、決定的な違いに拡大してしまう状況をさします。

カオスの概念をつくる上で重要だった研究の一つは、理論気象学者 ローレンツ(Lorenz)による1963年の論文です。 これは、天気予報の基礎研究のなかから生まれた もので、数値天気予報の限界を考える上でも 重要な意味をもっています。

この話題については、ローレンツ先生自身による解説書があります。

公開講座の講義録をもとにしたもので、 数式は少なく、高校卒程度の予備知識で読めるようにくふう された本です。

発表当時は注目されなかったものの、その後カオス理論の発端として有名になった

の論文で扱っている問題は、 3つの変数 X, Y, Zが連立された、次のような時間発展問題(σ, r, bは定数)です。
 dX / dt = - σ X + σ y
 dY / dt = - X Z + r X - Y
 dZ / dt =   X Y - b Z
これを計算するプログラムを、 の例文「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)

[目次へ]