前回の記事では有名な「
ローレンツ・アトラクタ」を
Maximaという数式計算ソフトで描こうと試み、よくわからないので結局c言語で描いてお茶をにごしました。
まだMaximaの使い方を十分把握しておらず、ネット上の情報をつぎはぎしてもなかなかうまく行きませんでした。
しかし、試行錯誤を繰り返すうち、とりあえず前回の記事にあったローレンツアトラクタを描くことができました!
いきなりですが、その画像を下に示します。

...まあ前回と同じようなグラフが描けたわけですが、今回はちゃんとMaximaを用いて描きました。
前回の記事を読んでいない方は以下のリンクで概要を確認できます。
→
Lorenz_atracter概要では、Maximaでどのように操作すればよいのか順を追って説明します。
1.wxmaximaの導入Maximaという大変便利な数式計算ソフトは、
Ubuntu11.04には標準搭載されていません。
Maximaは端末上で操作するソフトですが、数式が見づらいので「wxmaxima」をインストールすることをおすすめします。
「Ubuntuソフトウェアセンター」から「wxmaxima」を検索すると出てきます。
wxmaximaを起動すると、毎回、tipsを表示する小窓も現れますが、無視して閉じましょう。
表示されるのは真っ白なウィンドウであり、カーソルが点滅しないので不安ですが、すぐに文字を打つことが可能です。
ここで注意すべきことが1点あります。それは、実行のために「Enter」キーを押してもただ改行になってしまうということです。
maximaの端末上での実行は文の後にセミコロン「;」または「$」をつけて「Enter」ですが、
wxmaxima上では「Shift + Enter」が実行の役割を果たします。最も良く使う操作なので注意しましょう。
2.wxmaximaでの実行実行は以下の入力を1行ずつ行います。
「
(%i3)」などは「input」を表しており、実行するたびに(%o3)の「output」が実際には表示されます。実際のwxmaxima上での見た目は以下の画像。

ではmaximaソースの説明をしたいと思います。
(%i1)では、"dynamics"というパッケージをロードしています。これは(%i5)で出てくる「rk」関数を使うために必要です。
(%i2)から(%i4)までは、前の記事で出てきたローレンツのアトラクタの連立微分方程式の右辺をそれぞれ関数f(x,y,z)、g(x,y,z)、h(x,y,z)とおいて定義しています。
(%5)で「rkdat」というものを「rk」関数のアウトプットと定義しています。
rk関数というのは、微分方程式を解くための「ルンゲ・クッタ法」を行ってくれる関数です。書式は、
というふうになります。
(%i6)で"numericalio"というパッケージをロードしています。次の(%i7)の「write_data」を用いるために必要です。
(%i7)この関数で、(%i5)で定義した「rkdat」を、"rk.dat"というファイルに出力しています。
3.gnuplotでの描画できあがったdatファイルをgnuplotで描画します。手順は前回の記事と同様にします。
端末を開き、以下の流れを打ち込んでいきます。
これは前回とほぼ同じ操作ですが、最後の行だけ少し補足します。
「
using 2:3:4」というのはdatファイルの2,3,4列目をそれぞれx,y,zの値として読み込むということです。確認してみるとわかりますが、maximaで出力させた「rk.dat」というdatファイルは、1列目にtの値が入っています。使用したいのは2,3,4列のx,y,zの値なので、2:3:4のように書きます。
そして、その後についている「
w l」ですが、これは「
with
lines」の略で同じ、プロットを線で結ぶという意味を表します。
以上で、ローレンツのアトラクタが描かれた画像ファイル「maxima_atracter」が出来上がります。
Maximaでカオスを描くという目的をなんとか遂げるできました。なかなか試行錯誤しましたが、次のカオス図形をMaximaで描くときはもっとスムーズにいけるだろうと思います。
今後の記事も「Mathematicaで学ぶシリーズ4 カオス入門」に載せられているMathematica向けのソースをMaximaに置き換えていく内容が多くなると思います。
ここまで呼んでくださりありがとうございます。ではまた次の記事で。
- 関連記事
-
スポンサーサイト
コメント