14
14
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:id="ode_root" xml:lang="ja">
16
<refname>ode_root</refname>
17
<refpurpose>求解付きの常微分方程式ソルバ</refpurpose>
21
<synopsis>[y,rd,w,iw]=ode("root",y0,t0,t [,rtol [,atol]],f [,jac],ng,g [,w,iw])</synopsis>
29
<para>実数ベクトルまたは行列 (初期値).</para>
35
<para>実数スカラー (初期時間).</para>
41
<para>実数ベクトル (解を計算する時間).</para>
47
<para>外部関数または文字列またはリスト.</para>
51
<term>rtol, atol</term>
54
実数定数または<literal>y</literal>と同じ大きさの実数ベクトル.
61
<para>外部関数または文字列またはリスト.</para>
79
<para>外部関数または文字列またはリスト.</para>
87
この構文により (最初の引数が<literal>"root"</literal>)
88
<literal>ode</literal> は, 状態量<literal>y(t)</literal>が
89
面<literal>g(t,y)=0</literal>を通過するまで
90
微分方程式<literal>dy/dt=f(t,y)</literal>
94
<literal>g</literal> に面の方程式を指定します.
97
FortranサブルーチンまたはC関数(文字列)またはリストです.
100
<literal>g</literal> が関数の場合,その構文は以下のようにする
103
<programlisting role="no-scilab-exec"><![CDATA[
16
<refname>ode_root</refname>
17
<refpurpose>求解付きの常微分方程式ソルバ</refpurpose>
21
<synopsis>[y,rd,w,iw]=ode("root",y0,t0,t [,rtol [,atol]],f [,jac],ng,g [,w,iw])</synopsis>
29
<para>実数ベクトルまたは行列 (初期値).</para>
35
<para>実数スカラー (初期時間).</para>
41
<para>実数ベクトル (解を計算する時間).</para>
47
<para>外部関数または文字列またはリスト.</para>
51
<term>rtol, atol</term>
54
実数定数または<literal>y</literal>と同じ大きさの実数ベクトル.
61
<para>外部関数または文字列またはリスト.</para>
79
<para>外部関数または文字列またはリスト.</para>
87
この構文により (最初の引数が<literal>"root"</literal>)
88
<literal>ode</literal> は, 状態量<literal>y(t)</literal>が
89
面<literal>g(t,y)=0</literal>を通過するまで
90
微分方程式<literal>dy/dt=f(t,y)</literal>
94
<literal>g</literal> に面の方程式を指定します.
97
FortranサブルーチンまたはC関数(文字列)またはリストです.
100
<literal>g</literal> が関数の場合,その構文は以下のようにする
103
<programlisting role="no-scilab-exec"><![CDATA[
105
105
]]></programlisting>
107
ただし, <literal>t</literal> はスカラー実数 (時間),
108
<literal>y</literal> は実数ベクトル (状態量). この関数は,
109
<literal>ng</literal>個の拘束条件に対応する
110
大きさ<literal>ng</literal>のベクトルを返します.
111
<literal>g</literal> が文字列の場合,
112
この文字列は, FortranサブルーチンまたはC関数を指しており,
113
以下のようなコール手順となります: <literal>g(n,t,y,ng,gout)</literal>.
114
ただし, <literal>ng</literal>は拘束条件の数,
115
<literal>gout</literal>は<literal>g</literal>の値
117
<literal>g</literal> は,
118
<literal>f</literal> と同じ表記のリストです.
119
(<link linkend="ode">ode</link>のヘルプ参照).
122
出力 <literal>rd</literal> は <literal>1 x k</literal> ベクトルです.
123
最初のエントリは,停止時間を含んでいます.
124
他のエントリは,<literal>g</literal>のどの要素の符号が変わったのかを
126
<literal>k</literal>が2より大きい場合,1以上の面
127
(<literal>(k-1)</literal> 個の面)が同時に符号が変わったことを意味します.
130
<literal>ode</literal>と同じです.<link linkend="ode">ode</link>のヘルプを参照ください.
135
<programlisting role="example"><![CDATA[
107
ただし, <literal>t</literal> はスカラー実数 (時間),
108
<literal>y</literal> は実数ベクトル (状態量). この関数は,
109
<literal>ng</literal>個の拘束条件に対応する
110
大きさ<literal>ng</literal>のベクトルを返します.
111
<literal>g</literal> が文字列の場合,
112
この文字列は, FortranサブルーチンまたはC関数を指しており,
113
以下のようなコール手順となります: <literal>g(n,t,y,ng,gout)</literal>.
114
ただし, <literal>ng</literal>は拘束条件の数,
115
<literal>gout</literal>は<literal>g</literal>の値
117
<literal>g</literal> は,
118
<literal>f</literal> と同じ表記のリストです.
119
(<link linkend="ode">ode</link>のヘルプ参照).
122
出力 <literal>rd</literal> は <literal>1 x k</literal> ベクトルです.
123
最初のエントリは,停止時間を含んでいます.
124
他のエントリは,<literal>g</literal>のどの要素の符号が変わったのかを
126
<literal>k</literal>が2より大きい場合,1以上の面
127
(<literal>(k-1)</literal> 個の面)が同時に符号が変わったことを意味します.
130
<literal>ode</literal>と同じです.<link linkend="ode">ode</link>のヘルプを参照ください.
135
<programlisting role="example"><![CDATA[
137
137
// dy/dt=y , y(0)=1, として y(t)=2 となる最小の時間 t を探します
138
138
deff("[ydot]=f(t,y)","ydot=y")