[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
53.1 Introduction to drawdf | ||
53.2 Functions and Variables for drawdf |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
関数 drawdf
は一階常微分方程式 (ODE)や二連立自律一階 ODE系の方向場を描画します。
これは追加パッケージなので、利用するには、最初に
load(drawdf)
でロードしなければいけません。
Drawdfは draw
パッケージ上に構築されています。これは Gnuplot 4.2を要求します。
単一の ODEの方向場をプロットするには、 ODEを以下の形式で書かなければいけません:
dy -- = F(x,y) dx |
そして関数 Fを drawdf
の引数に与えなければいけません。
もし独立変数と従属変数が、上の式のように xと yでないなら、
drawdfコマンドへの引数として与えられるリストの中に明示的にそれら
2つの変数を指名しなければいけません。
(例を見てください。)
2つの自律 ODEの組の方向場をプロットするには、それらを以下の形式で書かなければいけません。
dx dy -- = G(x,y) -- = F(x,y) dt dt |
そして drawdf
の引数は 2つの関数 Gと
Fをその順に持つリストでなければいけません;
すなわち、リストの最初の式は水平軸上に表された変数の時間導関数であり、
二番目の式は垂直軸上に表された変数の時間導関数です。
それら 2つの変数は xと yである必要はありませんが、
もしそうでないなら、 drawdfに与えられる二番目の引数は
2つの変数を、最初のものが水平軸上のものを、その後が垂直軸上のものを
指定する別のリストでなければいけません。
もしただ 1つの ODEが与えられるなら、
drawdf
は暗に x=t
,G(x,y)=1
と認め、
非自律方程式を2つの自律方程式系に変換します。
Categories: Differential equations · Plotting Share packages · Package drawdf Package draw
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
関数 drawdf
は、
オプションの解曲線や draw
パッケージを使う他のグラフィックスと一緒に
2D方向場を描きます。
最初の引数は導関数を指定し、式か 2つの式のリストでなければいけません。 dydx, dxdt, dydtは xと yに依存する式です。 dvdu, dudt, dvdtは uと vに依存する式です。
もし独立変数と従属変数が xと yでないなら、
それらの名前を、導関数に続いてすぐに、
2つの名前のリスト [
u,v]
のとしてか、形式
[
u,umin,umax]
と
[
v,vmin,vmax]
の
2つのリストとしてのいずれかのように,指定しなければいけません。
残りの引数はグラフィックオプションかグラフィックオブジェクト,
任意の深さで入れ子になったグラフィックオプションやオブジェクトを含むリストです。
drawdf
がサポートするグラフィックオプションとオブジェクトの集合は
draw
パッケージの draw2d
と gr2d
がサポートするもの上位集合です。
引数は順次解釈されます: グラフィックオプションは続くグラフィックオブジェクトすべてに影響します。 更に、グラフィックオブジェクトは指定された順にキャンバス上に描かれ、 先に描かれたグラフィックスを見えなくするかもしれません。 いくつかのグラフィックオプションはシーンのグローバルな外観に影響します。
drawdf
がサポートする追加のグラフィックオブジェクトは以下を含みます:
solns_at
, points_at
, saddles_at
, soln_at
,
point_at
, saddle_at
.
drawdf
がサポートする追加のグラフィックオプションは以下を含みます:
field_degree
, soln_arrows
, field_arrows
,
field_grid
, field_color
, show_field
,
tstep
, nsteps
, duration
, direction
,
field_tstep
, field_nsteps
, field_duration
.
draw
パッケージから受け継がれた、共通に使われるグラフィックオブジェクトは
以下を含みます: explicit
, implicit
, parametric
,
polygon
, points
, vector
, label
,
draw2d
と gr2d
がサポートする他のすべてのもの。
draw
パッケージから受け継がれた、共通に使われるグラフィックオプションは
以下を含みます:
points_joined
, color
, point_type
, point_size
,
line_width
, line_type
, key
, title
, xlabel
,
ylabel
, user_preamble
, terminal
, dimensions
,
file_name
, draw2d
と gr2d
がサポートする他のすべてのもの。
draw2d
も参照してください。
wxMaximaや Imaximaのユーザーは wxdrawdf
を代わりに使うかもしれません。
それは、グラフィックスが wxdraw
を使うノートブック内で描かれることを除いて、
drawdf
と同一です。
この関数を利用するには、最初に load(drawdf)
と書いてください。
例:
(%i1) load(drawdf)$ (%i2) drawdf(exp(-x)+y)$ /* default vars: x,y */ (%i3) drawdf(exp(-t)+y, [t,y])$ /* default range: [-10,10] */ (%i4) drawdf([y,-9*sin(x)-y/5], [x,1,5], [y,-2,2])$ |
下位互換のために、 drawdf
は
plotdfがサポートしたパラメータのほとんどを受け付けます。
(%i5) drawdf(2*cos(t)-1+y, [t,y], [t,-5,10], [y,-4,9], [trajectory_at,0,0])$ |
soln_at
と solns_at
は、少し強化された
4次の Runge Kutta数値積分器を使って、指定された点を通る解曲線を描きます。
(%i6) drawdf(2*cos(t)-1+y, [t,-5,10], [y,-4,9], solns_at([0,0.1],[0,-0.1]), color=blue, soln_at(0,0))$ |
field_degree=2
とすると、それぞれのグリッド点での 1次と
2次の導関数に基づいて、場を二次のスプラインで構成します。
field_grid=[
COLS,ROWS]
はグリッドの列と行の数を指定します。
(%i7) drawdf(2*cos(t)-1+y, [t,-5,10], [y,-4,9], field_degree=2, field_grid=[20,15], solns_at([0,0.1],[0,-0.1]), color=blue, soln_at(0,0))$ |
soln_arrows=true
は解曲線に矢印を加え、
(デフォルトでは)方向場からそれらを削除します。
また、解曲線を強調するようにデフォルトの色を変えます。
(%i8) drawdf(2*cos(t)-1+y, [t,-5,10], [y,-4,9], soln_arrows=true, solns_at([0,0.1],[0,-0.1],[0,0]))$ |
duration=40
は数値積分の時間間隔を指定します(デフォルトは 10))。
もし解がプロット領域から遠くに移動し過ぎたり、
導関数が複素数や無限大になったりしても、積分は自動的に停止します。
ここでも field_degree=2
を指定して二次スプラインをプロットします。
以下の方程式は捕食者-被食者系をモデル化します。
(%i9) drawdf([x*(1-x-y), y*(3/4-y-x/2)], [x,0,1.1], [y,0,1], field_degree=2, duration=40, soln_arrows=true, point_at(1/2,1/2), solns_at([0.1,0.2], [0.2,0.1], [1,0.8], [0.8,1], [0.1,0.1], [0.6,0.05], [0.05,0.4], [1,0.01], [0.01,0.75]))$ |
field_degree='solns
とすると、場は、 4次の
Runge Kuttaで計算された多くの小さな解曲線で構成され、この場合、より良い結果をもたらします。
(%i10) drawdf([x*(1-x-y), y*(3/4-y-x/2)], [x,0,1.1], [y,0,1], field_degree='solns, duration=40, soln_arrows=true, point_at(1/2,1/2), solns_at([0.1,0.2], [0.2,0.1], [1,0.8], [0.8,1], [0.1,0.1], [0.6,0.05], [0.05,0.4], [1,0.01], [0.01,0.75]))$ |
saddles_at
は自動的にそれぞれの鞍部で方程式を線形化しようとし、
セパラトリクスを含む、それぞれの固有ベクトルに対応した数値解をプロットしようとします。
tstep=0.05
は数値積分器の最大時間ステップを指定します(デフォルトは 0.1)。
xと yのステップを小さく保つために、小さ目の時間ステップが時々使われます。
以下の方程式は減衰振り子をモデル化します。
(%i11) drawdf([y,-9*sin(x)-y/5], tstep=0.05, soln_arrows=true, point_size=0.5, points_at([0,0], [2*%pi,0], [-2*%pi,0]), field_degree='solns, saddles_at([%pi,0], [-%pi,0]))$ |
show_field=false
は場を完全に抑制します。
(%i12) drawdf([y,-9*sin(x)-y/5], tstep=0.05, show_field=false, soln_arrows=true, point_size=0.5, points_at([0,0], [2*%pi,0], [-2*%pi,0]), saddles_at([3*%pi,0], [-3*%pi,0], [%pi,0], [-%pi,0]))$ |
drawdf
は認識しないパラメータすべてを draw2d
や gr2d
に渡します。
なので、 draw
パッケージのフルパワーを drawdf
と組み合わせられます。
(%i13) drawdf(x^2+y^2, [x,-2,2], [y,-2,2], field_color=gray, key="soln 1", color=black, soln_at(0,0), key="soln 2", color=red, soln_at(0,1), key="isocline", color=green, line_width=2, nticks=100, parametric(cos(t),sin(t),t,0,2*%pi))$ |
drawdf
はグラフィクオプションやオブジェクトの入れ子のリストを受け付けます。
なので、 makelistやグラフィックスを生成する他の関数コールの便利な使用が可能です。
(%i14) colors : ['red,'blue,'purple,'orange,'green]$ (%i15) drawdf([x-x*y/2, (x*y - 3*y)/4], [x,2.5,3.5], [y,1.5,2.5], field_color = gray, makelist([ key = concat("soln",k), color = colors[k], soln_at(3, 2 + k/20) ], k,1,5))$ |
Categories: Package drawdf
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.