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

# 71. plotdf

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

## 71.1 Introduction to plotdf

関数`plotdf`は、 1次常微分方程式(ODE)や2つの自律 1次 ODE系の(勾配場とも呼ばれる)方向場のプロットを生成します。

Plotdfは Xmaximaを必要とします。 コンソールや他の Maximaインターフェースから使うことはできますが、 結果のファイルは Xmaximaに送られ、プロットされます。 plotdfを使ってみる前に Xmaximaをインストールしたことを確認してください。

単一 ODEの方向場をプロットするには ODEを以下の形式で書かなければいけません:

           dy
           -- = F(x,y)
           dx

そして関数 Fを `plotdf`の引数に与えなければいけません。 もし独立変数と従属変数が、上の式のように xと yでないなら、 plotdfコマンドへの引数として与えられるリストの中に明示的にそれら 2つの変数を指名しなければいけません。 (例を見てください。)

2つの自律 ODEの組の方向場をプロットするには、それらを以下の形式で書かなければいけません。

           dx             dy
           -- = G(x,y)    -- = F(x,y)
           dt             dt

そして `plotdf`の引数は 2つの関数 Gと Fをその順に持つリストでなければいけません; すなわち、リストの最初の式は水平軸上に表された変数の時間導関数であり、 二番目の式は垂直軸上に表された変数の時間導関数です。 それら2つの変数は xと yである必要はありませんが、 もしそうでないなら、 plotdfに与えられる二番目の引数は 2つの変数を指定する別のリストでなければいけません。 一番目が水平軸上のものを、その後が垂直軸上のものを指定します。

もし単一の ODEが与えられるなら、 `plotdf`は、暗に `x=t`, `G(x,y)=1`とみなし、 非自励方程式を 2つの自励方程式系に変換します。

·

Categories: Differential equations ·Share packages ·Package plotdf

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

## 71.2 Functions and Variables for plotdf

関数: plotdf (dydx, ...options...)
関数: plotdf (dvdu, `[`u,v`]`, ...options...)
関数: plotdf (`[`dxdt,dydt`]`, ...options...)
関数: plotdf (`[`dudt,dvdt`]`, `[`u,v`]`, ...options...)

  2次元 xと yに方向場を表示します。

  最初の引数は導関数を指定し、式か 2つの式のリストでなければいけません。 dydx, dxdt, dydtは xと yに依存する式です。 dvdu, dudt, dvdtは uと vに依存する式です。 それら 2つの変数に加えて、 `parameters`オプションで与えられる数値を持つか (オプション構文法は以下に与えられます)、 slidersオプションで指定される許される値の範囲のパラメータ一式にも、 式は依存するかもしれません。

  コマンド内やメニューで選択して、いくつかの他のオプションを与えることができます。 プロット上でクリックしたり、オプション `trajectory_at`を使って積分曲線を得ることができます。 `direction`オプションを使って積分の方向を制御できます。 オプションは、 forward, backward, bothのいずれかの値を取り得ます。 `nsteps`で積分ステップの数を与えることができ、 `tstep`オプションでそれらの間の時間間隔を設定できます。 積分には Adams Moulton法が使われます; 4次の適応 Runge-Kutta法に切り替えることも可能です。

  プロットウィンドウメニュー:

  プロットウィンドウのメニューには以下のオプションがあります: Zoom, はマウスの振る舞いを変えて、プロット領域上で左ボタンをクリックすることで ズームインできるようになります。 ある点近くをクリックする毎に、クリックした点を中心にしてプロットが拡大されます。 <Shift>キーを押しながらクリックすると、以前の倍率にズームアウトします。 ある点をクリックした時、軌跡の計算を再開するにはメニューから Integrateを選択してください。

  メニューの中のオプション Configを使って，使用中の ODE(s)や様々な他の設定を変えることができます。 構成が変更された後、新しい設定を稼働するにはメニューオプション Replotを選択しなければいけません。 もし、座標の組を Configダイアログメニューの場 Trajectory atに入れて、 <enter>キーを押したら、 既に示されているものに加えて、新しい積分曲線が表示されます。 Replotが選択された時は、入れられた最後の積分曲線だけが表示されます。

  右マウスボタンを押しながらカーソルを動かすと、プロットを横や上下にドラッグできます。 ステップ数や tの初期値、x, yの中心や範囲のような追加パラメータは、 Configメニューで設定できます。

  プロットのコピーは、メニューオプション Saveを使って ポストスクリプトファイルとして保存できます。

  プロットオプション:

  `plotdf`コマンドはいくつかのコマンドを含むかもしれません。 それぞれのコマンドは複数の項目のリストです。 最初の項目はオプション名で、残りはオプションに割り当てられる値から成ります。

  `plotdf`が認識するオプションは以下の通りです:

  - tstepは独立変数 tに関する増分の長さを定義します。 積分曲線を計算するのに使われます。 もしただ 1つの式 dydxが `plotdf`に与えられたら、 x変数は tに直接比例することになります。 デフォルト値は 0.1です。
  - nstepsは、積分曲線を計算するのに、独立変数に対して使われる長さ `tstep`のステップ回数を定義します。 デフォルト値は 100です。
  - directionは積分曲線を計算する際に従う独立変数の方向を定義します。 可能な値は、 `forward`―これは増分 `tstep`で独立変数を `nsteps`回増やします― `backward`―これは独立変数を減らします― または `both`―これは `nsteps`回前進、 `nsteps`回後進で拡げた積分曲線に導きます― キーワード `right`と `left`を、 `forward`と `backward`の別称として使うことができます。 デフォルト値は `both`です。
  - tinitialは積分曲線を計算するために使われる変数 tの初期値です。 微分方程式が自律なので、その設定は tの関数として曲線のプロットでだけ現れます。 デフォルト値は 0です。
  - versus_tは独立変数 tの 2つの関数 x, yとしての積分曲線のプロットを使って二番目のプロットウィンドウを生成するために 使われます。 もし `versus_t`が 0と異なる任意の値を与えられたら、 二番目のプロットウィンドウが表示されます。 二番目のプロットウィンドウはメインプロットウィンドウのメニューに似た別のメニューを含みます。 デフォルト値は 0です。
  - trajectory_atは積分曲線の開始点のための座標 xinitialと yinitialを定義します。 オプションはデフォルトで空です。
  - parametersは 微分方程式の定義の中で使われるパラメータとその数値のリストを定義します。 パラメータの名前と値は、コンマで分離された組 `name=value`の列を持つ文字列で与えなければいけません。
  - slidersはスライダーボタンを使って対話的に変更されるパラメータと それらのパラメータの変動範囲のリストです。 パラメータの名前と範囲は、コンマで分離された要素 `name=min:max`の列を持つ文字列で与えなければいけません。
  - xfunは方向場の上にセミコロンで分離された表示される xの関数の列を持つ文字列を定義します。 これらの関数は Maximaではなく Tclでパースされます。
  - xには2つの数が続かなければいけません。 2つの数は水平軸上で表示される最小値と最大値を設定します。 もし水平軸上の変数が xでないなら、 このオプションは水平軸上の変数名を持たなければいけません。 デフォルトの水平範囲は -10から 10です。
  - yには 2つの数が続かなければいけません。 2つの数は垂直軸上で表示される最小値と最大値を設定します。 もし垂直軸上の変数が yでないなら、 このオプションは垂直軸上の変数名を持たなければいけません。 デフォルトの垂直範囲は -10から 10です。

  例:

  - 微分方程式 y’ = exp(-x) + yの方向場と (2, -0.1)を通過する解を表示するために:

        (%i1) plotdf(exp(-x)+y,[trajectory_at,2,-0.1])$

  - 方程式 diff(y,x) = x - y^2の方向場と初期条件 y(-1) = 3の解を得るために以下のコマンドを使うことができます:

        (%i1) plotdf(x-y^2,[xfun,"sqrt(x);-sqrt(x)"],
                 [trajectory_at,-1,3], [direction,forward],
                 [y,-5,5], [x,-4,16])$

    グラフは関数 y = sqrt(x)も表示します。

  - 以下の例は、2つの方程式 dz/dt = vと dv/dt = -k*z/mで定義される調和振動子の方向場と、 (z,v) = (6,0)を通る積分曲線を、 (kは 2に固定で) mの値を対話的に変えられるスライダーと一緒に、 表示します。

        (%i1) plotdf([v,-k*z/m], [z,v], [parameters,"m=2,k=2"],
                   [sliders,"m=1:5"], [trajectory_at,6,0])$

  - Duffing方程式 m*x”+c*x’+k*x+b*x^3 = 0の方向場をプロットするために変数 y=x’を導入し、以下のように使います:

        (%i1) plotdf([y,-(k*x + c*y + b*x^3)/m],
                     [parameters,"k=-1,m=1.0,c=0,b=1"],
                     [sliders,"k=-2:2,m=-1:1"],[tstep,0.1])$

  - 質量 mの値を変更するのに使うことができるスライダーと一緒に 与えられた初期条件の解と減衰振り子の方向場と 時間の関数として2つの状態変数のプロットを一緒に:

        (%i1) plotdf([w,-g*sin(a)/l - b*w/m/l], [a,w],
                [parameters,"g=9.8,l=0.5,m=0.3,b=0.05"],
                [trajectory_at,1.05,-9],[tstep,0.01],
                [a,-10,2], [w,-14,14], [direction,forward],
                [nsteps,300], [sliders,"m=0.1:1"], [versus_t,1])$

  ·

  Categories: Package plotdf ·Plotting ·Numerical methods

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

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