Add mathjax for dgeqrf
[maxima.git] / doc / info / ja / drawdf.texi
blobeb4487eab3fcd20ddbb5eaa0978b01ee8d3fdf14
1 @menu
2 * Introduction to drawdf::
3 * Functions and Variables for drawdf::
4 @end menu
6 @node Introduction to drawdf, Functions and Variables for drawdf, drawdf, drawdf
7 @section Introduction to drawdf
9 関数@code{drawdf}は
10 一階常微分方程式(ODE)や
11 二連立自律一階ODE系の方向場を描画します。
13 これは追加パッケージなので、利用するには、最初に
14 @code{load("drawdf")}でロードしなければいけません。
15 Drawdfは@code{draw}パッケージ上に構築されています。これはGnuplot 4.2を要求します。
17 単一のODEの方向場をプロットするには、ODEを以下の形式で書かなければいけません:
18 @ifnottex
19 @example
20        dy
21        -- = F(x,y)
22        dx
23 @end example
24 @end ifnottex
25 @tex
26 $${{dy}\over{dx}} = F(x,y)$$
27 @end tex
29 そして関数@var{F}を@code{drawdf}の引数に与えなければいけません。
30 もし独立変数と従属変数が、上の式のように@var{x}と@var{y}でないなら、
31 drawdfコマンドへの引数として与えられるリストの中に明示的に
32 それら2つの変数を指名しなければいけません。
33 (例を見てください。)
35 2つの自励ODEの組の方向場をプロットするには、
36 それらを以下の形式で書かなければいけません。
37 @ifnottex
38 @example
39        dx             dy
40        -- = G(x,y)    -- = F(x,y) 
41        dt             dt
42 @end example
43 @end ifnottex
44 @tex
45 $${{dx}\over{dt}} = G(x,y) \qquad {{dy}\over{dt}} = F(x,y)$$
46 @end tex
48 そして@code{drawdf}の引数は2つの関数@var{G}と@var{F}を
49 その順に持つリストでなければいけません;
50 すなわち、リストの最初の式は水平軸上に表された変数の時間導関数であり、
51 二番目の式は垂直軸上に表された変数の時間導関数です。
52 それら2つの変数は@var{x}と@var{y}である必要はありませんが、
53 もしそうでないなら、
54 drawdfに与えられる二番目の引数は
55 2つの変数を、最初のものが水平軸上のものを、その後垂直軸上のものを指定する別のリストでなければいけません。
57 もしただ1つのODEが与えられるなら、
58 @code{drawdf}は、
59 暗に@code{x=t},@code{G(x,y)=1}と認め、
60 非自励方程式を2つの自励方程式系に変換します。
62 @opencatbox
63 @category{Differential equations}
64 @category{Plotting}
65 @category{Share packages}
66 @category{Package drawdf}
67 @category{Package draw}
68 @closecatbox
71 @node Functions and Variables for drawdf,  , Introduction to drawdf, drawdf
72 @section Functions and Variables for drawdf
74 @subsection Functions
76 @deffn {関数} drawdf (@var{dydx}, ...options and objects...)
77 @deffnx {関数} drawdf (@var{dvdu}, @code{[}@var{u},@var{v}@code{]}, ...options and objects...)
78 @deffnx {関数} drawdf (@var{dvdu}, @code{[}@var{u},@var{umin},@var{umax}@code{]}, @code{[}@var{v},@var{vmin},@var{vmax}@code{]}, ...options and objects...)
79 @deffnx {関数} drawdf (@code{[}@var{dxdt},@var{dydt}@code{]}, ...options and objects...)
80 @deffnx {関数} drawdf (@code{[}@var{dudt},@var{dvdt}@code{]}, @code{[}@var{u},@var{v}@code{]}, ...options and objects...)
81 @deffnx {関数} drawdf (@code{[}@var{dudt},@var{dvdt}@code{]}, @code{[}@var{u},@var{umin},@var{umax}@code{]}, @code{[}@var{v},@var{vmin},@var{vmax}@code{]}, ...options and objects...)
83 関数@code{drawdf}は、
84 オプションの解曲線や@code{draw}パッケージを使う他のグラフィックスと一緒に、
85 2D方向場を描きます。
87 最初の引数は導関数を指定し、式か2つの式のリストでなければいけません。
88 @var{dydx}, @var{dxdt}, @var{dydt}は@var{x}と@var{y}に依存する式です。
89 @var{dvdu}, @var{dudt}, @var{dvdt}は@var{u}と@var{v}に依存する式です。
91 もし独立変数と従属変数が@var{x}と@var{y}でないなら、
92 それらの名前を、導関数に続いてすぐに、
93 2つの名前のリスト@code{[}@var{u},@var{v}@code{]}のとしてか、
94 形式@code{[}@var{u},@var{umin},@var{umax}@code{]}と
95 @code{[}@var{v},@var{vmin},@var{vmax}@code{]}の2つのリストとしてのいずれか
96 のように,指定しなければいけません。
98 残りの引数は@i{グラフィックオプション}か@i{グラフィックオブジェクト},
99 任意の深さで入れ子になったグラフィックオプションやオブジェクトを含むリストです。
100 @code{drawdf}がサポートするグラフィックオプションとオブジェクトの集合は
101 @code{draw}パッケージの@code{draw2d}と@code{gr2d}がサポートするもの上位集合です。
103 引数は順次解釈されます:
104 @i{グラフィックオプション}は続く@i{グラフィックオブジェクト}すべてに影響します。
105 更に、@i{グラフィックオブジェクト}は指定された順にキャンバス上に描かれ、
106 先に描かれたグラフィックスを見えなくするかもしれません。
107 いくつかの@i{グラフィックオプション}はシーンのグローバルな外観に影響します。
109 @code{drawdf}がサポートする追加の@i{グラフィックオブジェクト}は以下を含みます:
110 @code{solns_at}, @code{points_at}, @code{saddles_at}, @code{soln_at},
111 @code{point_at}, @code{saddle_at}.
113 @code{drawdf}がサポートする追加の@i{グラフィックオプション}は以下を含みます:
114 @code{field_degree}, @code{soln_arrows}, @code{field_arrows},
115 @code{field_grid}, @code{field_color}, @code{show_field},
116 @code{tstep}, @code{nsteps}, @code{duration}, @code{direction},
117 @code{field_tstep}, @code{field_nsteps}, @code{field_duration}.
119 @code{draw}パッケージから受け継がれた、共通に使われる@i{グラフィックオブジェクト}は
120 以下を含みます: @code{explicit}, @code{implicit}, @code{parametric},
121 @code{polygon}, @code{points}, @code{vector}, @code{label},
122 @code{draw2d}と@code{gr2d}がサポートする他のすべてのもの。
124 @code{draw}パッケージから受け継がれた、共通に使われる@i{グラフィックオプション}は
125 以下を含みます:@*
126 @code{points_joined}, @code{color},
127 @code{point_type}, @code{point_size}, @code{line_width},
128 @code{line_type}, @code{key}, @code{title}, @code{xlabel},
129 @code{ylabel}, @code{user_preamble}, @code{terminal},
130 @code{dimensions}, @code{file_name},
131 @code{draw2d}と@code{gr2d}がサポートする他のすべてのもの。
133 @code{draw2d}も参照してください。
135 wxMaximaやImaximaのユーザーは@code{wxdrawdf}を代わりに使うかもしれません。
136 それは、
137 グラフィックスが@code{wxdraw}を使うノートブック内で描かれることを除いて、
138 @code{drawdf}と同一です。
140 この関数を利用するには、最初に@code{load("drawdf")}を書いてください。
142 例:
144 @example
145 (%i1) load("drawdf")$
146 (%i2) drawdf(exp(-x)+y)$        /* default vars: x,y */
147 (%i3) drawdf(exp(-t)+y, [t,y])$ /* default range: [-10,10] */
148 (%i4) drawdf([y,-9*sin(x)-y/5], [x,1,5], [y,-2,2])$
149 @end example
151 下位互換のために、@code{drawdf}はplotdfがサポートしたパラメータのほとんどを
152 受け付けます。
154 @example
155 (%i5) drawdf(2*cos(t)-1+y, [t,y], [t,-5,10], [y,-4,9],
156              [trajectory_at,0,0])$
157 @end example
159 @code{soln_at}と@code{solns_at}は、
160 少し強化された4次のRunge Kutta数値積分器を使って、
161 指定された点を通る解曲線を描きます。
163 @example
164 (%i6) drawdf(2*cos(t)-1+y, [t,-5,10], [y,-4,9],
165              solns_at([0,0.1],[0,-0.1]),
166              color=blue, soln_at(0,0))$
167 @end example
169 @code{field_degree=2}とすると、
170 それぞれのグリッド点での1次と2次の導関数に基づいて、
171 場が二次のスプラインで構成されます。
172 @code{field_grid=[}@var{COLS},@var{ROWS}@code{]}は
173 グリッドの列と行の数を指定します。
175 @example
176 (%i7) drawdf(2*cos(t)-1+y, [t,-5,10], [y,-4,9],
177              field_degree=2, field_grid=[20,15],
178              solns_at([0,0.1],[0,-0.1]),
179              color=blue, soln_at(0,0))$
180 @end example
182 @code{soln_arrows=true}は
183 解曲線に矢印を加え、
184 (デフォルトでは)方向場からそれらを削除します。
185 また、解曲線を強調するようにデフォルトの色を変えます。
187 @example
188 (%i8) drawdf(2*cos(t)-1+y, [t,-5,10], [y,-4,9],
189              soln_arrows=true,
190              solns_at([0,0.1],[0,-0.1],[0,0]))$
191 @end example
193 @code{duration=40}は数値積分の時間間隔を指定します(デフォルトは10))。
194 もし解がプロット領域から遠くに移動し過ぎたり、
195 導関数が複素数や無限大になったりしても、積分は自動的に停止します。
196 ここでも、 @code{field_degree=2}を指定して二次スプラインをプロットします。
197 以下の方程式は捕食者-被食者系をモデル化します。
199 @example
200 (%i9) drawdf([x*(1-x-y), y*(3/4-y-x/2)], [x,0,1.1], [y,0,1],
201              field_degree=2, duration=40,
202              soln_arrows=true, point_at(1/2,1/2),
203              solns_at([0.1,0.2], [0.2,0.1], [1,0.8], [0.8,1],
204                       [0.1,0.1], [0.6,0.05], [0.05,0.4],
205                       [1,0.01], [0.01,0.75]))$
206 @end example
208 @code{field_degree='solns}とすると、
209 場は、4次のRunge Kuttaで計算された多くの小さな解曲線で構成され、
210 この場合、より良い結果をもたらします。
212 @example
213 (%i10) drawdf([x*(1-x-y), y*(3/4-y-x/2)], [x,0,1.1], [y,0,1],
214               field_degree='solns, duration=40,
215               soln_arrows=true, point_at(1/2,1/2),
216               solns_at([0.1,0.2], [0.2,0.1], [1,0.8],
217                        [0.8,1], [0.1,0.1], [0.6,0.05],
218                        [0.05,0.4], [1,0.01], [0.01,0.75]))$
219 @end example
221 @code{saddles_at}は
222 自動的にそれぞれの鞍部で方程式を線形化しようとし、
223 セパラトリクスを含む、それぞれの固有ベクトルに対応した数値解をプロットしようとします。
224 @code{tstep=0.05}は
225 数値積分器の最大時間ステップを指定します(デフォルトは0.1)。
226 xとyのステップを小さく保つために、小さ目の時間ステップが時々使われます。
227 以下の方程式は減衰振り子をモデル化します。
229 @example
230 (%i11) drawdf([y,-9*sin(x)-y/5], tstep=0.05,
231               soln_arrows=true, point_size=0.5,
232               points_at([0,0], [2*%pi,0], [-2*%pi,0]),
233               field_degree='solns,
234               saddles_at([%pi,0], [-%pi,0]))$
235 @end example
237 @code{show_field=false}は場を完全に抑制します。
239 @example
240 (%i12) drawdf([y,-9*sin(x)-y/5], tstep=0.05,
241               show_field=false, soln_arrows=true,
242               point_size=0.5,
243               points_at([0,0], [2*%pi,0], [-2*%pi,0]),
244               saddles_at([3*%pi,0], [-3*%pi,0],
245                          [%pi,0], [-%pi,0]))$
246 @end example
248 @code{drawdf}は、認識しないパラメータすべてを@code{draw2d}や@code{gr2d}に渡します。
249 なので、@code{draw}パッケージのフルパワーを@code{drawdf}と組み合わせられます。
251 @example
252 (%i13) drawdf(x^2+y^2, [x,-2,2], [y,-2,2], field_color=gray,
253               key="soln 1", color=black, soln_at(0,0),
254               key="soln 2", color=red, soln_at(0,1),
255               key="isocline", color=green, line_width=2,
256               nticks=100, parametric(cos(t),sin(t),t,0,2*%pi))$
257 @end example
259 @code{drawdf}はグラフィクオプションやオブジェクトの入れ子のリストを受け付けます。
260 なので、makelistやグラフィックスを生成する他の関数コールの便利な使用が可能です。
262 @example
263 (%i14) colors : ['red,'blue,'purple,'orange,'green]$
264 (%i15) drawdf([x-x*y/2, (x*y - 3*y)/4],
265               [x,2.5,3.5], [y,1.5,2.5],
266               field_color = gray,
267               makelist([ key   = concat("soln",k),
268                          color = colors[k],
269                          soln_at(3, 2 + k/20) ],
270                        k,1,5))$
271 @end example
273 @opencatbox
274 @category{Package drawdf}
275 @closecatbox
277 @end deffn