DEtools[DEplot3d] - 常微分方程式系の3次元解をプロットする
使い方
DEplot3d(deqns, vars, trange, inits, options)
DEplot3d(deqns, vars, trange, xrange, yrange, inits, options)
パラメータ
deqns - 常微分方程式からなるリストまたは集合
vars - 従属変数のリストまたは集合
trange - 独立変数の範囲
inits - リストからなる集合またはリスト; 解曲線の初期条件
xrange - 従属変数の第1座標の範囲
yrange - 従属変数の第2座標の範囲
options - (オプション) keyword=value という形の等式
|
説明
|
|
•
|
微分方程式系と、inits により指定された初期条件のリストが与えられたとき、DEplot3d は系の解曲線の3次元表示を生成します。独立変数はただ1つでなければいけません。(DEplot で見られるような)方向場を描くことはできません。
|
•
|
デフォルトの積分方法は method=classical[rk4] です。他の方法はオプションの等式で指定できます。プロットの作成には数値的方法が使われるので、出力は使われている数値的方法の特徴に左右されることに注意して下さい。 特に、漸近線を扱うときに、異常な出力が生じる可能性があります。これは、問題の初期条件が標準形、すなわち、関数値および微分方程式の階数より1つ少ない階数までの全ての導関数の同じ点での値で与えられる必要があることを意味します。
|
•
|
3つの従属変数、または(2システムに対しては)独立変数と2つの従属変数がプロットされます。他の見方はオプション scene を使うことにより指定できます。
|
•
|
デフォルトでは、プロットは箱型の座標軸で作成されます。
|
[ [x(t0)=x0,y(t0)=y0,z(t0)=z0,...], [x(t1)=x1,y(t1)=y1,z(t1)=z1,...], ... ]
|
のようにしなければなりません。inits はリストのリスト(または集合)で、各部分リストは1組の(1つの解曲線に対する)初期条件を指定しています。
|
•
|
xrange および yrange は次のように指定します。
|
x(t) = x1..x2, y(t) = y1..y2 あるいは、
x = x1..x2, y = y1..y2
|
デフォルトでは、解曲線に沿った積分は、指定された範囲を1つの網の目の点だけ越えた後で止まります。これはオプション obsrange により覆すことができます。
|
•
|
オプションの等式 options は、plot3d および dsolve[numeric] のオプションの一部と同様に以下のものからなります。
|
'iterations'
'linecolor'
'obsrange'
'scene'
'stepsize'
|
iterations は、格納されている点の間のステップ、すなわち stepsize のサイズの回数を指定します。これは、多数の点を格納したりプロットしたりせずに、小さい stepsize で、より高い精度で点をプロットするのに便利です。
|
•
|
linecolor, linecolour = color_info
|
|
color_info は次のいくつかの形を取ることができます: 1) plot[color] 名; 2) COLOR('HUE',realcons); 3) COLOR('RGB',realcons,realcons, realcons); 4) 独立変数の式; または 5) 独立変数の手続き
|
|
4) および 5) の場合、独立変数の値は式または手続きに渡されます。このとき、計算結果は [0,1] 上で正規化され、'HUE' の値として適用されます。この色の特徴は、解曲線が独立変数をともにどのように変わっていくかを表示するのに役立てることができます。
|
|
さらに、1)-5) は、各解曲線につき1つの要素を持つリストにまとめることもできます。このとき、リストの各要素は対応する解曲線に適用されます。
|
|
デフォルトでの色付けは、Maple のプロットルーチンにより内部的に扱われます。
|
|
obsrange は、解曲線がいったん指定された範囲の外に出たとき、求積器を止めるかどうかを指定します。漸近的な挙動とともに関数をプロットするのに役立てることができます。デフォルトは TRUE です。
|
•
|
scene = name, name, name
|
|
scene は、プロットの見方を指定します。たとえば、scene=[x,y,z] は、t を隠して x 対 y 対 z のプロットを、また scene=[t,y,z] は、t をあらわにして t 対 y対 z のプロットを生成するよう指定します。 このオプションは、プロットする変数の順序を変更するのに使うことができます。vars が集合として入力される場合、デフォルトの順序はありませんが、リストとして入力される場合は、そこで与えた順序が使われます。
|
|
stepsize stepsize は、グラフを作成する際に用いられる隣り合う網の目の点の間の距離を指定します。trange=a..b に対し、デフォルトの stepsize の値は abs((b-a))/20 です。stepsize の指定が大きすぎる場合、デフォルトが使われます。
|
•
|
オプションの等式は、plot3d および dsolve[numeric] で提供されるように、他にもたくさんあります。もっと多くの情報については、?plot3d[options] および 個々の dsolve[numeric] のヘルプファイルを見て下さい。
|
•
|
この関数は、パッケージ DEtools の一部なので、with(DEtools) を実行した後に限り DEplot3d(..) の形で使うことができます。しかし、コマンドの長い形 DEtools[DEplot3d](..) を使えば、いつでもアクセスすることができます。
|
|
|
例
|
|
>
|
with(DEtools):
DEplot3d({diff(y(x),x)=y(x)-z(x),diff(z(x),x)=z(x)-2*y(x)},{y(x),z(x)},x=0..3,
[[y(0)=1.638,z(0)=2.31]],y=0..2,z=-4..4,scene=[x,z(x),y(x)],linecolour=
COLOR(HUE,.5));
|
>
|
DEplot3d({diff(x(t),t)=-sin(t),diff(y(t),t)=cos(t)},{y(t),x(t)},t=-2*Pi..0,
[[y(0)=0,x(0)=1]],scene=[t,x(t),y(t)],stepsize=0.1,linecolor=cos(t));
|
>
|
DEplot3d({D(x)(t)=y(t),D(y)(t)=-x(t)-y(t)},[x(t),y(t)],t=0..10,[[x(0)=0,
y(0)=1],[x(0)=0,y(0)=.5]],scene=[t,x(t),y(t)],stepsize=.1,
title=`Damped oscillations`,linecolour=t-sqrt(t));
|
>
|
DEplot3d({diff(x(t),t)=y(t),diff(y(t),t)=-sin(x(t))},[x(t),y(t)],t=0..10,
[[x(0)=0,y(0)=.5],[x(0)=0,y(0)=1],[x(0)=0,y(0)=1.8],[x(0)=-2*Pi,y(0)=1],
[x(0)=2*Pi,y(0)=.5],[x(0)=-2*Pi,y(0)=2.1],[x(0)=2*Pi,y(0)=-2.1]],stepsize=.2,
title=`Pendulum Vibrations`,orientation=[0,90],linecolour=sin(t)-t);
|
>
|
DEplot3d({diff(x(t),t)=y(t),diff(y(t),t)=-sin(x(t))-y(t)/10},{x(t),y(t)},
t=-10..10,stepsize=.1,[[x(0)=1,y(0)=1]],linecolor=t);
|
>
|
DEplot3d({D(x)(t)=y(t)+z(t),D(y)(t)=-x(t)-y(t)+w(t),D(z)(t)=x(t)+y(t)-z(t),
D(w)(t)=x(t)-w(t)*z(t)},{x(t),y(t),z(t),w(t)},t=0..10,[[x(0)=1,y(0)=0,
z(0)=2,w(0)=3],[x(0)=0,z(0)=.25,y(0)=.5,w(0)=.165]],scene=[x(t),z(t),w(t)],
stepsize=.1,orientation=[139,-106]);
|
|
|
参照
|
|
DEplot, DEtools, dsolve[classical], dsolve[dverk78], dsolve[gear], dsolve[lsode], dsolve[numeric], dsolve[rkf45], plot3d, plot3d[options], plots[odeplot]
|
|