ddeset
遅延を含む微分方程式オプション構造体を作成または変更
構文
options = ddeset('name1',value1,'name2',value2,...)
options = ddeset(oldopts,'name1',value1,...)
options = ddeset(oldopts,newopts)
ddeset
説明
options = ddeset('name1',value1,'name2',value2,...)
は、名前が指定されたプロパティとその指定値を含む、積分器のオプション構造体 options
を作成します。指定していないプロパティは既定値になります。プロパティを固有に識別する頭文字を入力するだけで十分です。関数 ddeset
は、プロパティ名の大文字と小文字の区別を無視します。
options = ddeset(oldopts,'name1',value1,...)
は、既存のオプション構造体 oldopts
を変更します。これは指定された名前と値の組み合わせによって oldopts
内の値を書き換え、変更後の構造体を出力引数として返します。
options = ddeset(oldopts,newopts)
は、既存のオプション構造体 oldopts
と、新しいオプション構造体 newopts
を組み合わせます。newopts
内の値が、oldopts
内の対応する値を書き換えます。
入力引数なしの ddeset
は、すべてのプロパティ名と取り得る値を表示し、中かっこ {}
内に既定値を示します。
関数 ddeget
を使用して、options
構造体から特定のプロパティの値をクエリできます。
DDE プロパティ
以下の節では、関数 ddeset
を使用して設定できるプロパティについて説明します。プロパティには、いくつかのカテゴリがあります。
誤差制御プロパティ
各ステップで、DDE ソルバーはエラー e
を推定します。関数 dde23
は、ローカル打ち切り誤差を推定し、その他のソルバーは、残差を推定します。いずれの場合でも、この誤差は、許容レベル以下の誤差でなければなりません。これは、指定された相対許容誤差 RelTol
、および指定された絶対許容誤差 AbsTol
の関数です。
|e(i)|*max(RelTol*abs(y(i)),AbsTol(i))
ルーチンの問題で、ソルバーは、ユーザーが要求した精度とほぼ同じ精度を設定します。ODE ソルバーは、「長い」間隔で積分する問題、およびある程度不安定な問題に対しては、精度を落として設定します。問題が複雑だと、場合によっては、許容誤差を既定値より厳しくする必要があります。相対精度については、RelTol
を調節します。絶対許容誤差では、解要素のスケーリングが重要になります。|y|
が AbsTol
よりやや小さい場合、ソルバーは y
の正しい桁を取得しないことがあります。場合によっては、解要素のスケーリングを検出するために、問題の解を複数回求めなければなりません。
したがって、大まかに言うと、しきい値 AbsTol(i)
より小さいものを除いて、すべての解の要素は RelTol
程度の正確な桁数が必要です。小さい成分 y(i)
が重要ではない場合でも、これより重要な成分を正確に計算できるように、AbsTol(i)
を小さく指定して、y(i)
の正しい桁を取得しなければなりません。
次の表で誤差制御プロパティを説明します。
DDE 誤差制御プロパティ
プロパティ | 値 | 説明 |
---|---|---|
| 正のスカラー { | 解ベクトル 各積分ステップで推定される誤差は、| |
| 正のスカラー、またはベクトル { | 解ベクトルの個々の要素に適用する絶対許容誤差。
|
|
| 解ノルムの相対誤差のコントロール。このプロパティを |
ソルバー出力プロパティ
ソルバー出力プロパティを使用して、ソルバーが生成する出力を制御できます。
DDE ソルバー出力プロパティ
プロパティ | 値 | 説明 |
---|---|---|
| 関数ハンドル { | 出力関数は、積分ステップがすべて成功した後でソルバーが呼び出す関数です。出力関数を指定するには、 options = ddeset('OutputFcn',... @myfun) これは、' 出力関数は、以下の形式でなければなりません。 status = myfun(t,y,flag) 関数のパラメーター化 は必要に応じて追加のパラメーターを ソルバーは、以下のフラグで指定された出力関数を呼び出します。呼び出し構文は、フラグにより異なるので注意してください。関数は適切に処理できるものでなければなりません。
このような一般的な目的で出力関数を使用するか、変更して独自の関数を作成できます。詳細は、コマンド ラインで
|
| インデックスのベクトル | ソルバーが出力関数に渡す解ベクトルの要素を指定するインデックスのベクトル。たとえば、出力関数 options = ddeset... ('OutputFcn',@odeplot,... 'OutputSel',[1 3]); 既定の設定では、ソルバーは、すべての解要素を出力関数に渡します。 |
|
| ソルバーが計算に関する統計を表示するかどうかを指定します。既定の設定では、
|
ステップ サイズ プロパティ
ステップ サイズ プロパティを使用すると、ソルバーが試行する最初のステップのサイズを指定できます。これは、問題のスケールを認識するときに役立ちます。また、以降のステップのサイズに制限を指定できます。
次の表でステップ サイズ プロパティを説明します。
DDE ステップ サイズ プロパティ
プロパティ | 値 | 説明 |
---|---|---|
| 正のスカラー | 推奨する初期ステップ サイズ。 |
| 正のスカラー | ソルバー ステップ サイズの上限。微分方程式に周期係数または周期解が含まれる場合、
|
イベント検出プロパティ
DDE の問題によっては、特定のイベントの時刻が重要になります。ソルバーは、問題を解いているときに、ユーザー定義関数のゼロへの移行、ゼロからの移行、またはゼロを介した移行を見つけることで、このようなイベントを検出できます。
次の表で Events
プロパティを説明します。
DDE イベント プロパティ
プロパティ | 値 | 説明 |
---|---|---|
| 関数ハンドル | 1 つまたは複数のイベント関数を含む関数ハンドル。 [value,isterminal,direction] = events(t,y,YDEL)
[value,isterminal,direction] = events(t,y,YDEL,YPDEL) 出力引数
常微分方程式問題を解くときにイベント関数を使用する例については、ODE のイベント検出を参照してください。 |
不連続点プロパティ
ソルバー関数は、履歴または方程式の係数の不連続点に関する問題を解くことができます。以下のプロパティを使用すると、これらのソルバーに異なる初期値を与えることが可能になり、dde23
に既知の不連続点の位置を提供できます。詳細については、DDE の不連続性を参照してください。
次の表は不連続点プロパティの説明です。
DDE 不連続点プロパティ
プロパティ | 値 | 説明 |
---|---|---|
| ベクトル | 不連続点の位置。低次導関数内において、履歴または解がジャンプ不連続点の可能性がある t を示します。これは、 |
| ベクトル | 解の初期値。既定の設定では、解の初期値は、初期点で |
例
ソルバーの相対許容誤差を既定値 1e-3
から 1e-4
に変更するオプション構造体を作成するには、以下のように入力します。
options = ddeset('RelTol',1e-4);
options
から 'RelTol'
の値を復元するには、以下のように入力します。
ddeget(options,'RelTol') ans = 1.0000e-004
バージョン履歴
R2006a より前に導入