[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

54. dynamics


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

54.1 The dynamics package

パッケージ dynamicsには、 3D可視化と、アニメーション、微分差分方程式のグラフィックス解析、微分方程式の数値解のための関数が含まれています。 微分方程式用の関数については Numerical Methodsの節で記述します。 離散力学系とフラクタルの様々なグラフィックス表現を生成するためのいくつかの関数と、 Mandelbrotと Julia集合については Plottingの節で記述します。

このパッケージのすべての関数は初めて使われる時自動的にロードされます。

Categories:  Dynamical systems · Share packages · Package dynamics


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

54.2 Graphical analysis of discrete dynamical systems

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

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

. Sierpinsky三角形のプロット:

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

figures/dynamics7

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は正の整数でなければいけません。 この関数は plot2dと同じオプションを受け付けます。

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

figures/dynamics1

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つでなければいけません。 変数はリストの中に明示的に指名されなければいけません。 オプションはplot2dと同じです。

。 2次元離散力学系の発展:

 
(%i1) f: 0.6*x*(1+2*x)+0.8*y*(x-1)-y^2-0.9$
(%i2) g: 0.1*x*(1-6*x+4*y)+0.1*y*(1+9*y)-0.4$
(%i3) 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

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とできます。 オプションはplot2dと同じです。

。 4つの行列と4点で得られたBarnsleyのシダ:

 
(%i1) a1: matrix([0.85,0.04],[-0.04,0.85])$
(%i2) a2: matrix([0.2,-0.26],[0.23,0.22])$
(%i3) a3: matrix([-0.15,0.28],[0.26,0.24])$
(%i4) a4: matrix([0,0],[0,0.16])$
(%i5) p1: [0,1.6]$
(%i6) p2: [0,1.6]$
(%i7) p3: [0,0.44]$
(%i8) p4: [0,0]$
(%i9) w: [85,92,99,100]$
(%i10) ifs(w, [a1,a2,a3,a4], [p1,p2,p3,p4], [5,0], 50000, [style,dots]);

figures/dynamics8

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個の値を示します。 plot2dが受け付けるオプションに加えて、 垂直方向に表現された異なる点の最大数を設定するオプション pixelsを受け付けます。

。パラメータ aを持つ2次写像の軌道グラフ:

 
(%i1) orbits(x^2+a, 0, 50, 200, [a, -2, 0.25], [style, dots]);

figures/dynamics3

x = -1.25近傍の下位分岐周りの領域を拡大するために使用:

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

figures/dynamics4

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回繰り返されます。 オプションは plot2dと同じです。

 
(%i1) staircase(cos(y), 1, 11, [y, 0, 1.2]);

figures/dynamics2

Categories:  Package dynamics · Plotting


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

54.3 Visualization with VTK

関数 sceneは、 Visualization ToolKit (VTK)ソフトウエアを使って3D画像とアニメーションを生成します。 この関数を使うためには、 Xmaximaと VTKを(あるシステムでは別のパッケージに含まれる VTKの TCLバインディングを含めて)システムにインストールしなければいけません。

関数: scene (objects, …, options, …);

空のリストもしくは いくつかの objectsoptionsのリストを受け付けます。 プログラムはXmaximaを起動し、Xmaximaが3次元空間内に与えられたオブジェクトを表現し与えられたオプションを適用した外部ウィンドウを開きます。 それぞれのオブジェクトは以下の4つのクラスの1つに属さなければいけません: 球、立法、円柱、円錐 (Scene objectsを参照してください) オブジェクトは名前を与えることか、最初の要素がクラス名で続く要素がそのオブジェクトのオプションであるリストで識別されます

。 青の背景を持つ六角形ピラミッド:

 
(%i1) scene(cone, [background,"#9980e5"])$

figures/scene1

マウスの左ボタンを押しながらグラフィックスウィンドウ上を動かすことによって、 ピラミッドの別のビューを見せるようにカメラを回すことができます。 2つのプロットオプション elevationazimuthを ビュー用カメラの初期の向きを変えるのに使うことができます。 マウスの中央ボタンを押しながら動かすとカメラを動かすことができ、 マウスの右ボタンを押しながら上下に動かすとズームイン/アウトします。

それぞれのオブジェクトオプションはオプション名で始まるリストでなければいけません。 許されるオプションのリストは Scene object's options節で見つけられます。

。これは、地面に落下してエネルギーを失うことなしに跳ね返る球を示します。 アニメーションを開始したり止めたりするには、play/pauseボタンを押してください。

 
(%i1) p: makelist ([0,0,2.1- 9.8*t^2/2], t, 0, 0.64, 0.01)$

(%i2) p: append (p, reverse(p))$

(%i3) ball: [sphere, [radius,0.1], [thetaresolution,20],
  [phiresolution,20], [position,0,0,2.1], [color,red],
  [animate,position,p]]$

(%i4) ground: [cube, [xlength,2], [ylength,2], [zlength,0.2],
  [position,0,0,-0.1],[color,violet]]$

(%i5) scene (ball, ground, restart)$

figures/scene2

restartオプションは 位置リストの最後の点に届く度に自動的にアニメーションを再始動するのに使われます。 色に関して受け付けられる値はplot2dの colorオプションのものと同じです。

Categories:  Package dynamics · Plotting


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

54.3.1 Scene options

シーンオプション: azimuth [azimuth, angle]

デフォルト値: 135

カメラの水平(x, y)平面上の回転。 angleは実数でなければいけません; 角度0は カメラがy軸の方向を示し、x軸が右に現れることを意味します。

Categories:  Package dynamics · Plotting

シーンオプション: background [background, color]

デフォルト値: black

グラフィックスウインドウの背景色。 カラー名と16進数の赤-緑-青文字列を受け付けます (plot2dの colorオプションを参照してください)。

Categories:  Package dynamics · Plotting

シーンオプション: elevation [elevation, angle]

デフォルト値: 30

カメラの垂直回転。 angleは実数でなければいけません; 角度0はカメラが水平面上を指すことを意味し、 デフォルト角度の30度はカメラが水平面から30度下向きを示していることを意味します。

Categories:  Package dynamics · Plotting

シーンオプション: height [height, pixels]

デフォルト値: 500

グラフィックスウィンドウの高さ(ピクセル)です。 pixelsは正の整数でなければいけません。

Categories:  Package dynamics · Plotting

シーンオプション: restart [restart, value]

デフォルト値: false

true値は、リストの終わりに至った時アニメーションが自動的に再スタートすることを意味します。 "restart"とだけ書くのは、[restart, true]と等価です。

Categories:  Package dynamics · Plotting

シーンオプション: tstep [tstep, time]

デフォルト値: 10

連続アニメーションフレームの間の繰り返しの間の時間(ミリ秒単位)です。 timeは実数でなければいけません。

Categories:  Package dynamics · Plotting

シーンオプション: width [width, pixels]

デフォルト値: 500

グラフィックスウインドウの幅(ピクセル)です。 pixelsは正の整数でなければいけません。

Categories:  Package dynamics · Plotting

シーンオプション: windowname [windowtitle, name]

デフォルト値: .scene

nameは文字列でなければいけません。 Xmaximaが sceneグラフィックス用に生成した Tkウインドウの名前として使われます。 デフォルト値 .sceneは新たなトップレベルウィンドウが生成されることを意味します。

Categories:  Package dynamics · Plotting

シーンオプション: windowtitle [windowtitle, name]

デフォルト値: Xmaxima: scene

nameは 文字列でなければいけません。 sceneが生成するウィンドウのタイトルに書かれます。

Categories:  Package dynamics · Plotting


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

54.3.2 Scene objects

シーンオブジェクト: cone [cone, options]

高さが1で、軸から0.5単位離れた頂点を持つ六角形の底面を持つ正角錐を生成します。 オプション heightradiusは それらのデフォルト値を変えるのに使い、オプション resolutionは 底面の辺の数を変えるのに使います; より大きな値にするとコーンらしく見えます。 デフォルトでは軸はx軸に沿っていて、軸の中点は原点にあり、頂点はx軸の正側にあります; それらのデフォルトを変えるには、オプション orientationcenterを使ってください。

. これは、プレイボタンを押すとz軸の周りを回転し始める角錐を示します。

 
(%i1) scene([cone, [orientation,0,30,0], [tstep,100],
   [animate,orientation,makelist([0,30,i],i,5,360,5)]], restart)$

Categories:  Package dynamics · Plotting

シーンオブジェクト: cube [cube, options]

単位1の辺でxy, xz, yz面と平行な面を持つ正立方体。 オプション xlength, ylength, zlength で3つの辺の長さを変えることができ、長方形の箱に変えます。 オプション orientationで表面を回転させることができます。

Categories:  Package dynamics · Plotting

シーンオブジェクト: cylinder [cylinder, options]

高さが1で、軸から0.5単位離れた頂点を持つ六角形の底面を持つ正角柱を生成します。 オプション height, radiusでそれらのデフォルトを変えることができ、 オプション resolutionで底面の辺の数を変えることができます; より大きな値にすると円柱らしく見えます。 オプション heightでデフォルトの高さを変えることができます。 デフォルトでは軸はx軸に沿っていて、軸の中点が原点に来ます; それらのデフォルトを変えるにはオプション orientation, centerを使ってください。

Categories:  Package dynamics · Plotting

シーンオブジェクト: sphere [sphere, options]

0.5単位のデフォルト半径を持ち、原点に中心がある球。

Categories:  Package dynamics · Plotting


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

54.3.3 Scene object's options

オブジェクトオプション: animation [animation, property, positions]

propertyは以下の 4つのオプジェクトのプロパティの1つでなければいけません: origin, scale, position, orientation そして positionsは点のリストでなければいけません。 再生ボタンを押すと、オプション tstepが与える時間感覚で オブジェクトプロパティを連続的にリストのすべての値をとるように変化させます。 一連の始めに戻すには巻き戻しボタンを使います。再度再生ボタンを押せばアニメーションが再スタートするようになります。

trackも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: capping [capping, number]

デフォルト値: 1

円錐か円柱に対して、底面を描くかどうかを決めます。 numberの値 1で底面を描き、値 0では描きません。

Categories:  Package dynamics · Plotting

オブジェクトオプション: center [center, point]

デフォルト値: [0, 0, 0]

positionに関するオブジェクトの幾何中心の座標。 pointは3つの実数のリストか、コンマで区切られた3つの実数をとることができます。 円柱や円錐、立方体では、高さの半分にあり、球では中心にあります。

Categories:  Package dynamics · Plotting

オブジェクトオプション: color [color, colorname]

デフォルト値: white

オブジェクトの色。 カラーネームか16進の赤緑青文字列を受け付けます。 (polot2dの colorオプションを参照してください。)

Categories:  Package dynamics · Plotting

オブジェクトオプション: endphi [endphi, angle]

デフォルト値: 180

球に関して、phiはz軸を通る垂直面上の角度です。 z軸の正の部分から測ります。 angleは0と180の間の数でなければいけません。 表面が終わるphiの最終値を設定します。 180より小さな値の時、球の表面の一部が消えます。

startphi, phiresolutionも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: endtheta [endtheta, angle]

デフォルト値: 360

球に関して、thetaは水平面上の角度(経度)です。 x軸の正の部分から測ります。 angleは0と360の間の数でなければいけません。 表面が終わるthetaの最終値を設定します。 360より小さな値の時、球の表面の一部が消えます。

starttheta, thetaresolutionも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: height [height, value]

デフォルト値: 1

valueは正の数字でなければいけません。 円錐や円柱の高さを設定します。

Categories:  Package dynamics · Plotting

オブジェクトオプション: linewidth [linewidth, value]

デフォルト値: 1

オプション wireframeが使われる時の線の幅。 valueは正の数でなければいけません。

Categories:  Package dynamics · Plotting

オブジェクトオプション: opacity [opacity, value]

デフォルト値: 1

valueは0と1の間の数でなければいけません。 数が小さいと、オブジェクトが透明になっていきます。 デフォルト値1は完全に不透明なオブジェクトを意味します。

Categories:  Package dynamics · Plotting

オブジェクトオプション: orientation [orientation, angles]

デフォルト値: [0, 0, 0]

3つの軸に対するオブジェクトの回転角度。 anglesは3つの実数のリストか、コンマで区切られた3つの実数を取ることができます。 : [0, 0, 90]はオブジェクトのx軸を参照系のy軸に回します。

Categories:  Package dynamics · Plotting

オブジェクトオプション: origin [origin, point]

デフォルト値: [0, 0, 0]

オブジェクトの他の寸法を決めるのに使われるオブジェクトの原点の座標。 pointは3つの実数のリストか、コンマで区切られた3つの実数を取ることができます。

Categories:  Package dynamics · Plotting

オブジェクトオプション: phiresolution [phiresolution, num]

デフォルト値:

startphiから endphiまでの phi角度区間が分割される部分区間の数。 numは正の整数でなければいけません。

startphi, endphiも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: points [points]

表面を描画するのに使われる三角測量の頂点のみを表示します。 : [sphere, [points]]

surface, wireframeも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: pointsize [pointsize, value]

デフォルト値: 1

オプション pointsを使う時の点の大きさ valueは正の数でなければいけません。

Categories:  Package dynamics · Plotting

オブジェクトオプション: position [position, point]

デフォルト値: [0, 0, 0]

オブジェクトの位置の座標。 pointは3つの実数のリストかコンマで区切られた3つの実数を取ることができます。

Categories:  Package dynamics · Plotting

オブジェクトオプション: radius [radius, value]

デフォルト値: 0.5

円柱や円錐の底面の頂点と軸の距離、半径。 valueは正の数でなければいけません。

Categories:  Package dynamics · Plotting

オブジェクトオプション: resolution [resolution, number]

デフォルト値: 6

numberは2より大きな整数でなければいけません。 円錐や円柱の底面の辺の数を設定します。

Categories:  Package dynamics · Plotting

オブジェクトオプション: scale [scale, factors]

デフォルト値: [1, 1, 1]

3つの軸に関してオブジェクトをスケールするのに使う3つの数字。 factorsは3つの実数のリストかコンマで区切られた3つの実数を取ることができます。 : [2, 0.5, 1] はオブジェクトをx軸方向に2倍に拡大し、y軸方向に半分に縮小し、z軸方向はそのままにします。

Categories:  Package dynamics · Plotting

オブジェクトオプション: startphi [startphi, angle]

デフォルト値: 0

球に関して、phyはz軸を含む垂直面上の角度です。 z軸の正の部分から測られます。 angle0と180の間の数でなければいけません。 表面が始まるphiの初期値を設定します。 0より大きな値の時、球の表面の一部が消えます。

endphi, phiresolutionも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: starttheta [starttheta, angle]

デフォルト値: 0

球に関して、thetaは水平面の角度(経度)です。 x軸の正の部分から測られます。 angle0と360の間の数でなければいけません。 表面が始まるthetaの初期値を設定します。 0より大きな値の時、球の表面の一部が消えます。

endtheta, thetaresolutionも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: surface [surface]

オブジェクトの表面を描画します。 表面を構築するのに使われる三角測量の線と点を表示します。 これはデフォルトの振る舞いです。 オプション pointswireframeでこの振る舞いを変えることができます。

Categories:  Package dynamics · Plotting

オブジェクトオプション: thetaresolution [thetaresolution, num]

デフォルト値:

startthetaから endthetaまでの theta角度区間を分割する部分区間の数。 numは正の整数でなければいけません。

starttheta, endthetaも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: track [track, positions]

positionsは点のリストでなければいけません。 再生ボタンを押した時、オプション tstepで与えられた時間感覚でオプジェクト位置がリストの点すべてに連続的に変わります。 オブジェクトの軌跡の後を残します。 一連の始めに戻すには巻き戻しボタンを使います。再度再生ボタンを押せばアニメーションが再スタートするようになります。

. これは、5 m/sのスピード、45度の角度で投げられたボールの軌跡を表示します。空気抵抗は無視されます:

 
(%i1) p: makelist ([0,4*t,4*t- 9.8*t^2/2], t, 0, 0.82, 0.01)$

(%i2) ball: [sphere, [radius,0.1], [color,red], [track,p]]$

(%i3) ground: [cube, [xlength,2], [ylength,4], [zlength,0.2],
      [position,0,1.5,-0.2],[color,green]]$

(%i4) scene (ball, ground)$

animationも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: xlength [xlength, length]

デフォルト値: 1

立方体のx方向の高さ。 lengthは正の数でなければいけません。 ylength, zlengthも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: ylength [ylength, length]

デフォルト値: 1

立方体のy方向の高さ。 lengthは正の数でなければいけません。 xlength, zlengthも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: zlength [zlength, length]

デフォルト値: 1

立方体のz方向の高さ。 lengthは正の数でなければいけません。 xlength, ylengthも参照してください。

Categories:  Package dynamics · Plotting

オブジェクトオプション: wireframe [wireframe]

表面を描画するの使われる三角測量の辺だけを表示します。 : [cube, [wireframe]]

surface, pointsも参照してください。

Categories:  Package dynamics · Plotting


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.