odeoptions ODEソルバのオプションを設定する

## 呼び出し手順

    odeoptions()

## 説明

この関数はODEソルバに様々なオプションを設定する コマンドを対話的に表示します. グローバル変数 `%ODEOPTIONS` はオプションを設定します.

`ode` 関数は,この変数が存在するかどうかを調べ, 存在する場合にはこれを使用します. デフォルト値を使用するには,この変数を消去してください. この変数を作成するには, `%ODEOPTIONS=odeoptions()`命令 を実行する必要があります.

変数 `%ODEOPTIONS` は以下の要素を 有するベクトルです:

`[itask, tcrit, h0, hmax, hmin, jactyp, mxstep, maxordn, maxords, ixpr, ml, mu]`.

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

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

- `itask` sets the integration mode:
  - 1: 指定した時間で通常の計算を行う
  - 2 : (`ode`の出力の最初行で指定した) メッシュ点で計算
  - 3 : 1内部メッシュ点で1ステップ進め,戻る
  - 4 : オーバーシュート`tcrit`なしに通常の計算を行う
  - 5 : `tcrit`を指定せずに,1ステップ進め,戻る
- 判定時間 `tcrit` は上記のように `itask`が 4または5の場合のみ使用されます.
- `h0` 最初に試すステップ
- `hmax` ステップの最大値
- `hmin` ステップの最小値
- `jactype` やヤコビアンのプロパティを以下のように設定します:
  - 0: 関数反復, ヤコビアンを用いない (`"adams"` または `"stiff"` のみ)
  - 1 : ユーザ提供の完全なヤコビアン
  - 2 : 内部的に生成した対角ヤコビアン
  - 3: 内部的に生成した対角ヤコビアン (`"adams"` または `"stiff"` のみ)
  - 4 : ユーザが提供したバンド行列のヤコビアン ( 以下の`ml`および`mu`参照)
  - 5 : 内部生成されたバンド行列のヤコビアン (以下の`ml` および `mu` 参照)
- `maxordn` は非スティッフの最大次数で, 最大 12です.
- `maxords` はスティッフの最大次数で, 最大5です.
- `ixpr` は出力レベルで, 0 または 1です.
- `ml`,`mu`

  `jactype` が 4 または 5の場合, `ml` および `mu` はバンド行列のヤコビアンの 上部および下部の半分のバンド幅です: このバンドは, `i-ml` <= `j` <= `ny-1`となる`i,j`で定義されます.

  `jactype` が 4の場合,ヤコビアン関数は `ml+mu+1 x ny` (ただし,`y`の`ny=dim`, `ydot=f(t,y)`)の行列`J` を返す必要があります. `J`の1列目は`mu`個のゼロの後に `df1/dy1`, `df2/dy1`, `df3/dy1`, ... (`1+ml`個のゼロでないエントリ)が続きます. 2列目は, `mu-1`個のゼロの後に `df1/dx2`, `df2/dx2`, などが続きます.

## 例

以下の例では, 常微分方程式 `dy/dt=y^2-y sin(t)+cos(t)` を, 初期条件 `y(0)=0`で解きます. 解は各メッシュ点で保存します.

    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

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

## 参照

- ode