<?xml version="1.0" encoding="UTF-8"?>

<!--
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2008 - INRIA
 * ...
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->

<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" xmlns:scilab="http://www.scilab.org" xml:id="odeoptions" xml:lang="ja">

    <refnamediv>

        <refname>odeoptions</refname>

        <refpurpose>ODEソルバのオプションを設定する</refpurpose>

    </refnamediv>

    <refsynopsisdiv>

        <title>呼び出し手順</title>

        <synopsis>odeoptions()</synopsis>

    </refsynopsisdiv>

    <refsection>

        <title>説明</title>

        <para>この関数はODEソルバに様々なオプションを設定する

            コマンドを対話的に表示します.

            グローバル変数

            <literal>%ODEOPTIONS</literal> はオプションを設定します.

        </para>

        <para>

            <caution>

                <literal>ode</literal> 関数は,この変数が存在するかどうかを調べ,

                存在する場合にはこれを使用します.

                デフォルト値を使用するには,この変数を消去してください.

                この変数を作成するには,

                <literal>%ODEOPTIONS=odeoptions()</literal>命令

                を実行する必要があります.

            </caution>

        </para>

        <para>

            変数 <literal>%ODEOPTIONS</literal> は以下の要素を

            有するベクトルです:

        </para>

        <para>

            <literal>[itask, tcrit, h0, hmax, hmin, jactyp, mxstep, maxordn, maxords, ixpr, ml, mu]</literal>.

        </para>

        <para>

            デフォルト値は以下となります:<literal>[1,0,0,%inf,0,2,500,12,5,0,-1,-1]</literal>

        </para>

        <para>これらの要素の意味を以下に示します.</para>

        <para>

            <itemizedlist>

                <listitem>

                    <literal>itask</literal> sets the integration mode:

                    <itemizedlist>

                        <listitem>1: 指定した時間で通常の計算を行う</listitem>

                        <listitem>2 :

                            (<literal>ode</literal>の出力の最初行で指定した) メッシュ点で計算

                        </listitem>

                        <listitem>3 : 1内部メッシュ点で1ステップ進め,戻る</listitem>

                        <listitem>

                            4 : オーバーシュート<literal>tcrit</literal>なしに通常の計算を行う

                        </listitem>

                        <listitem>

                            5 : <literal>tcrit</literal>を指定せずに,1ステップ進め,戻る

                        </listitem>

                    </itemizedlist>

                </listitem>

                <listitem>

                    判定時間 <literal>tcrit</literal> は上記のように

                    <literal>itask</literal>が 4または5の場合のみ使用されます.

                </listitem>

                <listitem>

                    <literal>h0</literal> 最初に試すステップ

                </listitem>

                <listitem>

                    <literal>hmax</literal> ステップの最大値

                </listitem>

                <listitem>

                    <literal>hmin</literal> ステップの最小値

                </listitem>

                <listitem>

                    <literal>jactype</literal> やヤコビアンのプロパティを以下のように設定します:

                    <itemizedlist>

                        <listitem>0: 関数反復, ヤコビアンを用いない

                            (<literal>"adams"</literal> または <literal>"stiff"</literal>

                            のみ)

                        </listitem>

                        <listitem>1 : ユーザ提供の完全なヤコビアン</listitem>

                        <listitem>2 : 内部的に生成した対角ヤコビアン </listitem>

                        <listitem>3: 内部的に生成した対角ヤコビアン

                            (<literal>"adams"</literal> または <literal>"stiff"</literal>

                            のみ)

                        </listitem>

                        <listitem>4 : ユーザが提供したバンド行列のヤコビアン (

                            以下の<literal>ml</literal>および<literal>mu</literal>参照)

                        </listitem>

                        <listitem>5 : 内部生成されたバンド行列のヤコビアン

                            (以下の<literal>ml</literal> および <literal>mu</literal>

                            参照)

                        </listitem>

                    </itemizedlist>

                </listitem>

                <listitem>

                    <literal>maxordn</literal> は非スティッフの最大次数で, 最大

                    12です.

                </listitem>

                <listitem>

                    <literal>maxords</literal> はスティッフの最大次数で, 最大5です.

                </listitem>

                <listitem>

                    <literal>ixpr</literal> は出力レベルで, 0 または 1です.

                </listitem>

                <listitem>

                    <literal>ml</literal>,<literal>mu</literal>

                    <para>

                        <literal>jactype</literal> が 4 または 5の場合,

                        <literal>ml</literal> および

                        <literal>mu</literal> はバンド行列のヤコビアンの

                        上部および下部の半分のバンド幅です:

                        このバンドは,

                        <literal>i-ml</literal> &lt;= <literal>j</literal> &lt;=

                        <literal>ny-1</literal>となる<literal>i,j</literal>で定義されます.

                    </para>

                    <para>

                        <literal>jactype</literal> が 4の場合,ヤコビアン関数は

                        <literal>ml+mu+1 x ny</literal>

                        (ただし,<literal>y</literal>の<literal>ny=dim</literal>,

                        <literal>ydot=f(t,y)</literal>)の行列<literal>J</literal>

                        を返す必要があります.

                        <literal>J</literal>の1列目は<literal>mu</literal>個のゼロの後に

                        <literal>df1/dy1</literal>, <literal>df2/dy1</literal>,

                        <literal>df3/dy1</literal>, ...

                        (<literal>1+ml</literal>個のゼロでないエントリ)が続きます.

                        2列目は, <literal>mu-1</literal>個のゼロの後に

                        <literal>df1/dx2</literal>,

                        <literal>df2/dx2</literal>, などが続きます.

                    </para>

                </listitem>

            </itemizedlist>

        </para>

    </refsection>

    <refsection>

        <title>例</title>

        <para>

            以下の例では, 常微分方程式

            <literal>dy/dt=y^2-y sin(t)+cos(t)</literal> を,

            初期条件 <literal>y(0)=0</literal>で解きます.

            解は各メッシュ点で保存します.

        </para>

        <programlisting role="example"><![CDATA[
function ydot=f(t,y)
    ydot=y^2-y*sin(t)+cos(t)
endfunction
%ODEOPTIONS=[2,0,0,%inf,0,2,500,12,5,0,-1,-1];
y=ode(0,0,%pi,f);
plot(y(1,:),y(2,:))
clear %ODEOPTIONS
 ]]></programlisting>

        <scilab:image>

            function ydot=f(t,y)

            ydot=y^2-y*sin(t)+cos(t)

            endfunction

            %ODEOPTIONS=[2,0,0,%inf,0,2,500,12,5,0,-1,-1];

            y=ode(0,0,%pi,f);

            plot(y(1,:),y(2,:))

            clear %ODEOPTIONS

        </scilab:image>

    </refsection>

    <refsection role="see also">

        <title>参照</title>

        <simplelist type="inline">

            <member>

                <link linkend="ode">ode</link>

            </member>

        </simplelist>

    </refsection>

</refentry>

