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

# 51. dynamics

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

## 51.1 Introduction to dynamics

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

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

グラフィックスを生成するコマンドは `plot2d`が受け入れるのと同じオプションといくつかの追加のオプションを受け入れます。

·

Categories: Dynamical systems ·Share packages ·Package dynamics

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

## 51.2 Functions and Variables for dynamics

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

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

  ·

  Categories: Package dynamics ·Plotting

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

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

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

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

  ·

  Categories: Package dynamics ·Plotting

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

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

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

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

  ·

  Categories: Package dynamics ·Plotting

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

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

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

  ·

  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を受け付けます。

例

以下の数列のグファフィックス表現と階段図形: 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]);

もしシステムが遅いなら、以下の例のように繰り返し回数を減らさなければいけないでしょう。 そして、もしモニタ上のドットが小さすぎるなら、 `[`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]);

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

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

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

    (%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]);

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

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

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

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

反復函数系で得られる 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]);

Plotting節のパッケージ`mandelbrot` と `julia` のドキュメントも参照してください。

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

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