
制御素人老人がScilab/Xcosのデモを動かして学んでます。制御のデモの筈なのですが、今回はローレンツ・バタフライです。「バタフライ効果」でお馴染みのカオスなアレです。ローレンツ方程式、ローレンツ・アトラクタなどで検索すれば大量にヒットしてくると思います。素人老人はグラフを描くときのテクにちょい感動しましたぞ。
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11の パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。
Scilab 2024.0.0
ローレンツアトラクタ
忘却力の老人の朧げな記憶によれば、本サイトでもローレンツアトラクタの計算やってます。そのときの記事が以下に。
やっつけな日常(13) スマホでGo!じゃない。全てを引きこむローレンツアトラクタ
上記の過去記事では、Go言語をつかってローレンツ方程式の軌跡を描いています。
計算しやすいので、上記過去記事同様、Webなど漁ると計算例多数が見つかります。しかし、もともとは気象学のローレンツ先生が発見された方程式であるようです。どこかに気象学のお立場からローレンツ方程式について説明されている文書(日本語がよい)を調べてみたらありました。『公益社団法人 日本気象協会』様の以下のページです。吉崎先生という方が解説されています。
上記を読ませていただくとローレンツ先生の「単純化した設定の乾燥大気における熱対流」の研究から導きだされたみたいです。
通常は、レーリー数R、プラントル数Pなどに関係する p, r, b のような定数名で書かれる(上記のGo言語過去記事の中のコードもp, r, b式)みたいなのですが、今回のXcosデモは、pの代わりにa、rの代わりにb、bの代わりにcを使っているみたいです。そのときのローレンツ方程式が以下に。
-
- \(\frac {dX} {dt} = aY – aX\)
- \(\frac {dY} {dt} = -XZ + bX – Y\)
- \(\frac {dZ} {dt} = XY – cZ\)
ローレンツ・バタフライのフロー
今回のデモは、以下のデモ選択画面から選択できます。
登場するフローが以下です。
上記のフローに小さく x y z のコメントがありますが、それぞれ上記のローレンツ方程式のX、Y、Zに対応していることが分かります。明快?
なお、それぞれの積分ブロックには、以下のように初期値が設定されています。
複数の値をベクトルで設定しているみたいです。
x, y, zとも、4個の「近い値だけれども、微妙に異なる」値を初期値として与えて、並行に計算しているようです。「初期値の僅かな違いに鋭敏な」カオスであることを示すためのものかな。
また、表示は2次元軌跡、3次元軌跡以外に、2次元のグラフが含まれてます。その設定のところを見たら、チョイ、カッコよかったです。こんな感じ。
ポートサイズを初期値ベクトルのサイズから求めているところ、そして表示色をvcolというベクトルから展開しているところなど、Scilabよく知っている人はこんな風に書くのだ、と目から鱗です。お惚け老人はひたすら定数で書いてましたもん。
なお、表示されているのはシミュレーションの最後の方だけです。途中、リフレッシュサイズ分だけが次々と表示されアニメーション的に変化していった末尾です。
2次元グラフが以下に。上からX、Y、Zのはず。それぞれ4色あるのは初期値が異なる軌跡です。確かに僅かな初期値の違いしかないのに、値が大きく異なった挙動であることが分かります。
このような形からバタフライと言われるの?知らんけど。