[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

50. dynamics


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

50.1 Introduction to dynamics

追加パッケージ dynamicsには、 離散力学系とフラクタルの様々なグラフィックス表現を生成するためのいくつかの関数と、 微分方程式系を数値的に解くための 4次 Runge-Kutta法の実装が含まれています。

このパッケージの関数を使うには、最初に load("dynamics")でパッケージをロードしなければいけません。

Maxima 5.12で導入された変更

Maxima 5.12以来現在まで dynamicsパッケージは グラフを処理するのに関数 plot2dを使います。 (juliamandelbrotを除いて) グラフィックスを生成するコマンドは plot2dのいかなるオプションも受け付けます。 オプションには、プロットスタイルや色を使ったり、 一方の、または両方の軸を対数スケールで表したり、 様々なグラフィカルインターフェイス全体に渡って変更を加えるものを含みます。 古いオプション domain, pointsize, xcenter, xradius, ycenter, yradius, xaxislabel, yaxislabelは この新しいバージョンでは受け付けられません。

現在,すべてのプログラムは、以前のバージョンのように xyだけでなく、 任意の変数名を受け付けます。 2つの要求パラメータが2つのプログラムで変えられました: evolution2dは、現在、2つの独立変数を陽に指定するリストを要求し、 orbitsの水平範囲はもはやステップサイズを要求しません; 範囲は、変数名と最小値、最大値だけを指定しなければいけません; ステップ数は、現在、オプション nticksで変えることができます。

·

Categories:  Dynamical systems ·Share packages ·Package dynamics


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

50.2 Functions and Variables for dynamics

関数: chaosgame ([[x1, y1]...[xm, ym]], [x0, y0], b, n, ..., options, ...);

いわゆるカオスゲームを実装します: 初期点 (x0, y0)がプロットされ、 m個の点 [x1, y1]...[xm, ym]の1つがランダムに選択されます。 プロットされる次の点はプロットされた以前の点からランダムに選ばれた点までの線分上で、 ランダム点からその線分の長さに bを掛けた距離にあります。 手続きは n回繰り返されます。

·

Categories:  Package dynamics ·Plotting

関数: evolution (F, y0, n, ..., options, ...);

2次元グラフに、点の水平座標が整数 0, 1, 2, ..., n、 垂直座標が再帰関係

 
        y(n+1) = F(y(n))

で定義された数列の対応する値 y(n)である n+1個の点を描きます。 ここで、初期値 y(0)y0に等しいです。 Fは1変数にだけ依存する式でなければいけません。 (例の中では yに依存していますが、他のいかなる変数を使うことができます), y0は実数でなければいけなく、 nは正の整数でなければいけません。

·

Categories:  Package dynamics ·Plotting

関数: evolution2d ([F, G], [u, v], [u0, y0], n, ..., options, ...);

再帰関係を伴う二次元離散力学系によって定義された点列の中の最初の n+1点を二次元プロットで表示します。 初期値 u0v0を持つ

 
        u(n+1) = F(u(n), v(n))    v(n+1) = G(u(n), v(n))

FGは 2変数 uvのみに依存する式 2つでなければいけません。 変数はリストの中に明示的に指名されなければいけません。

·

Categories:  Package dynamics ·Plotting

関数: ifs ([r1, ..., rm], [A1, ..., Am], [[x1, y1], ..., [xm, ym]], [x0, y0], n, ..., options, ...);

反復関数系法を実装します。 この方法は関数 chaosgameで記述した方法に似ていますが、 現在点からランダムに選ばれた点にセグメントを縮める代わりに、 そのセグメントの2成分はランダムに選ばれた点に対応する 2行 2列行列 Aiを乗算されます。

m個のアトラクティブな点の1つのランダムな選択を重み r1,...,rmで定義された非均一な確率分布で作ることができます。 それらの重みは累積形で与えられます; 例えばもし確率0.2, 0.5, 0.3を持つ3点があるなら、 重み r1, r2r3は 2, 7, 10とできます。

·

Categories:  Package dynamics ·Plotting

関数: julia (x, y, ...options...)

複素数 (x + i y)に関する Julia集合の表現のグラフィックスファイルを生成します。 パラメータ xyは実数でなければいけません。 ファイルは、 XPMグラフィックスフォーマットでカレントディレクトリかユーザーディレクトリに生成されます。 プログラムは走らせるのに数秒かかるかもしれません。 終了後、生成したファイル名と共にメッセージが印字されます。

Julia集合に属さない点には異なる色が割り当てられます。 繰り返し回数に従って、その点から始まり、半径2の収束円から動く数列を取ります。 繰り返しの最大回数はオプション levelsで設定されます; その回数の繰り返しの後、もし数列がまだ収束円内なら、 点はオプション colorで定義された色で塗られます。

Julia集合に属さない点に使われる色すべては、同じ saturationvalueを持ちますが、 hueと (hue + huerange)の間に一様に分布する、違った色相角を持ちます。

optionsはオプションの列です。 受け付けられるオプションのリストは以下の節で与えられます。

·

Categories:  Package dynamics ·Plotting

関数: mandelbrot (options)

Mandelbrot集合の表現のグラフィックスファイルを生成します。 ファイルは、 XPMグラフィックスフォーマットでカレントディレクトリかユーザーディレクトリに生成されます。 プログラムは走らせるのに数秒かかるかもしれません。 終了後、生成したファイル名と共にメッセージが印字されます。

Mandelbrot集合に属さない点には、異なる色が割り当てられます。 繰り返し回数に従って、その点から始まり、半径 2の収束円から動く数列を取ります。 繰り返しの最大回数はオプション levelsで設定されます; その回数の繰り返しの後、もし数列がまだ収束円内なら、点はオプション colorで定義された色で塗られます。

Mandelbrot集合に属さない点に使われる色すべては、同じ saturationvalueを持ちますが、hueと (hue + huerange)の間に一様に分布する、違った色相角を持ちます。

optionsはオプションの列です。 受け付けられるオプションのリストは以下の節で与えられます。

·

Categories:  Package dynamics ·Plotting

関数: orbits (F, y0, n1, n2, [x, x0, xf, xstep], ...options...);

パラメータ xを持つ一次元離散力学系の族に関する軌道図を描画します; この種の図は一次元離散系の分岐の研究に使われます。

関数 F(y)は、 関数 evolutionの場合と同様に値 y0で始まる数列を定義しますが、 この場合、その関数は x0から xfまでの区間内の値を取り、 xstepの増分を持つパラメータ xにも依存します。 パラメータ xに使われるそれぞれの値は水平軸に示されます。 垂直軸は、数列に n1回の時間発展させた後得られる数列 y(n1+1),..., y(n1+n2+1)n2個の値を示します。

·

Categories:  Package dynamics ·Plotting

関数: staircase (F, y0, n, ...options...);

再帰関係によって定義された数列に関する階段図形を描画します。

 
        y(n+1) = F(y(n))

入力パラメータの解釈と許される値は 関数 evolutionに関するものと同じです。 階段図形は線 G(y) = yと共に関数 F(y)のプロットから構成されます。 垂直区間は、その線上の点 (y0, y0)から関数 Fと交差する点まで描画されます。 水平区間はその点から線上の点 (y1, y1)に届くまで描画されます。 手続きは点 (yn, yn)に届くまで n回繰り返されます。

·

Categories:  Package dynamics ·Plotting

オプション

それぞれのオプションは複数の項目のリストです。 最初の項目はオプション名で、残りはオプションの引数からなります。

関数 evolution, evolution2d, staircase, orbits, ifs, chaosgameが受け付けるオプションは plot2dに関するオプションと同じです。 orbitsは、それらのオプションに加えて、 垂直方向に表される異なる点の最大数を設定する特別なオプション pixelsを受け付けます。

以下のオプションを関数 juliamandelbrotは受け付けます:

以下の数列のグファフィックス表現と階段図形: 2, cos(2), cos(cos(2)),...

 
(%i1) load("dynamics")$

(%i2) evolution(cos(y), 2, 11);

(%i3) staircase(cos(y), 1, 11, [y, 0, 1.2]);
figures/dynamics1 figures/dynamics2

もしシステムが遅いなら、以下の例のように繰り返し回数を減らさなければいけないでしょう。 そして、もしモニタ上のドットが小さすぎるなら、 [style,[points,0.8]]のように、 違ったスタイルを試したくなるかもしれません。

パラメータ aを持つ二次写像の軌跡図。

 
        x(n+1) = a + x(n)^2
 
(%i4) orbits(x^2+a, 0, 50, 200, [a, -2, 0.25], [style, dots]);
figures/dynamics3

x = -1.25近くのより低い分岐の回りの領域を拡大するには、以下を使ってください:

 
(%i5) orbits(x^2+a, 0, 100, 400, [a,-1,-1.53], [x,-1.6,-0.8],
             [nticks, 400], [style,dots]);
figures/dynamics4

フラクタルに導かれる二次元系の発展:

 
(%i6) f: 0.6*x*(1+2*x)+0.8*y*(x-1)-y^2-0.9$

(%i7) g: 0.1*x*(1-6*x+4*y)+0.1*y*(1+9*y)-0.4$

(%i8) evolution2d([f,g], [x,y], [-0.5,0], 50000, [style,dots]);
figures/dynamics5

そしてそのフラクタルの小さな領域の拡大:

 
(%i9) evolution2d([f,g], [x,y], [-0.5,0], 300000, [x,-0.8,-0.6],
                  [y,-0.4,-0.2], [style, dots]);
figures/dynamics6

カオスゲームで得られる Sierpinski三角形のプロット:

 
(%i9) chaosgame([[0, 0], [1, 0], [0.5, sqrt(3)/2]], [0.1, 0.1], 1/2,
                 30000, [style, dots]);
figures/dynamics7

反復函数系で得られる Barnsleyのシダ:

 
(%i10) a1: matrix([0.85,0.04],[-0.04,0.85])$

(%i11) a2: matrix([0.2,-0.26],[0.23,0.22])$

(%i12) a3: matrix([-0.15,0.28],[0.26,0.24])$

(%i13) a4: matrix([0,0],[0,0.16])$

(%i14) p1: [0,1.6]$

(%i15) p2: [0,1.6]$

(%i16) p3: [0,0.44]$

(%i17) p4: [0,0]$

(%i18) w: [85,92,99,100]$

(%i19) ifs(w, [a1,a2,a3,a4], [p1,p2,p3,p4], [5,0], 50000, [style,dots]);
figures/dynamics8

Mandelbrot集合の 12色のグラフィックス表現を納めた dynamics9.xpmという名前のファイルを生成するには以下を使ってください:

 
mandelbrot([filename,"dynamics9"])$
figures/dynamics9

そして数 (-0.55 + i 0.6)に関する Julia集合は以下で得られます:

 
julia(-0.55, 0.6, [levels, 36], [center, 0, 0.6], [radius, 0.3],
      [hue, 240], [huerange, -180], [filename, "dynamics10"])$

グラフはファイル dynamics10.xpmに保存されます。 x方向に -0.3から 0.3まで、 y方向に 0.3から 0.9までの領域を表示します。 青から始まり黄で終わる 36色が使われます。

figures/dynamics10


[ << ] [ >> ]           [冒頭] [目次] [見出し] [ ? ]

この文書は市川 雄二によって2013年8月月24日texi2html 1.82を用いて生成されました。