ソルバー
説明
シミュレーション時またはコード生成時にモデルの状態を計算するために使用するソルバーを選択します。
カテゴリ: ソルバー
設定
次の種類から選択します。
新しいモデルの既定の設定は、VariableStepAuto
です。
固定ステップ ソルバー
既定の設定: FixedStepAuto
一般に、[ode 14x]
以外の固定ステップ ソルバーは次のステップを以下のように計算します。
X(n+1) = X(n) + h dX(n)
ここで X は状態、h はステップ サイズ、dX は状態微分です。dX(n) は、メソッドの順序に応じて 1 つ以上の導関数評価を使用し、特定のアルゴリズムによって計算されます。
自動
自動ソルバーが選択する固定ステップ ソルバーを使用して、モデルの状態を計算します。モデルのコンパイル時に、
[自動]
によって自動ソルバーがモデルのダイナミクスに基づいて選択する固定ステップ ソルバーに変わります。モデルの右下隅にあるソルバーのハイパーリンクをクリックして、この選択を受け入れるか変更します。ode3 (Bogacki-Shampine)
Bogacki-Shampine 式の積分手法を使用して状態導関数を計算することにより、次のタイム ステップにおけるモデルの状態を、状態と状態導関数の現在の値の陽関数として計算します。
離散 (連続状態なし)
固定ステップ サイズを現在の時間に追加することによって、次のタイム ステップの時間を計算します。
このソルバーは、状態のないモデルまたは離散状態のみのモデルの場合に、固定ステップ サイズと共に使用してください。離散状態を更新するために、モデルのブロックが必要となります。
シミュレーション結果の精度と時間の長さは、シミュレーションに要するステップのサイズによって異なります。ステップ サイズが小さいと、結果の精度が高くなりますが、シミュレーションに要する時間は長くなります。
メモ
連続状態をもつモデルのシミュレーションに固定ステップの離散ソルバーを使用することはできません。
ode8 (Dormand-Prince RK8(7))
8 次 Dormand-Prince 式を使用して、次のタイム ステップにおけるモデルの状態を、状態と中間点で近似された状態導関数の現在の値の陽関数として計算します。
ode5 (Dormand-Prince)
5 次 Dormand-Prince 式を使用して、次のタイム ステップにおけるモデルの状態を、状態と中間点で近似された状態導関数の現在の値の陽関数として計算します。
ode4 (Runge-Kutta)
4 次ルンゲ・クッタ (RK4) 式を使用して、次のタイム ステップにおけるモデルの状態を、状態と状態導関数の現在の値の陽関数として計算します。
ode2 (Heun)
Heun 積分手法を使用して、次のタイム ステップにおけるモデルの状態を、状態と状態導関数の現在の値の陽関数として計算します。
ode1 (Euler)
Euler 積分手法を使用して、次のタイム ステップにおけるモデルの状態を、状態と状態導関数の現在の値の陽関数として計算します。このソルバーは、高次のソルバーよりも必要な計算量が少なくなります。ただし、精度が比較的落ちます。
ode14x (外挿)
ニュートン法と現在の値からの外挿を組み合わせて使用して、次のタイム ステップにおけるモデルの状態を、次のタイム ステップにおける状態と状態導関数の "陰" 関数として計算します。次の例では、X が状態、dX が状態導関数、h がステップ サイズです。
X(n+1) - X(n)- h dX(n+1) = 0
このソルバーでは、ステップあたりの必要な計算量が陽的なソルバーより多くなりますが、一定のステップ サイズでの精度は高くなります。
ode1be (後退オイラー法)
ode1be ソルバーは、固定の数のニュートン反復を使用し、固定コストのみが発生する、後退オイラー法型のソルバーです。
ode1be
ソルバーを、ode14x
ソルバーに対する計算量の少ない固定ステップの代替方法として使用できます。
可変ステップ ソルバー
既定の設定: VariableStepAuto
自動
自動ソルバーが選択する可変ステップ ソルバーを使用して、モデルの状態を計算します。モデルのコンパイル時に、
[自動]
が、自動ソルバーがモデルのダイナミクスに基づいて選択する可変ステップ ソルバーに変わります。モデルの右下隅にあるソルバーのハイパーリンクをクリックして、この選択を受け入れるか変更します。ode45 (Dormand-Prince)
陽的なルンゲ・クッタ (4,5) 式 (Dormand-Prince の組) を数値積分に使用して、次のタイム ステップにおけるモデルの状態を計算します。
ode45
は 1 ステップ ソルバーであるため、直前の時点における解しか必要となりません。ode45
はほとんどの問題に対する最初の試みとして使用してください。離散 (連続状態なし)
モデルの状態の変化の割合に応じて変化するステップ サイズを追加することによって、次のステップの時間を計算します。
このソルバーは、状態のないモデルまたは離散状態のみのモデルの場合に、可変ステップ サイズと共に使用してください。
ode23 (Bogacki-Shampine)
陽的なルンゲ・クッタ (2.3) 式 (Bogacki-Shampine の組) を数値積分に使用して、次のタイム ステップにおけるモデルの状態を計算します。
ode23
は 1 ステップ ソルバーであるため、直前の時点における解しか必要となりません。粗い許容範囲で計算する場合や少しスティッフなシステムの場合、
ode23
はode45
より効率的です。ode113 (Adams)
可変次数の Adams-Bashforth-Moulton PECE 数値積分手法を使用して、次のタイム ステップにおけるモデルの状態を計算します。
ode113
はマルチステップ ソルバーです。そのため、通常は、現在の解を計算するために以前の複数の時点における解が必要となります。厳しい許容範囲が設定された問題では、
ode113
がode45
より効率的な場合があります。ode15s (stiff/NDF)
可変次元の数値微分式 (NDF) を使用して、次のタイム ステップにおけるモデルの状態を計算します。NDF は、Gear 法とも呼ばれる後退差分式 (BDF) と関連していますが、それよりも効率的です。
ode15s
はマルチステップ ソルバーです。そのため、通常は、現在の解を計算するために以前の複数の時点における解が必要となります。ode15s
はスティッフな問題の場合に効率的です。ode45
がうまく機能しない場合や非効率な場合は、このソルバーを試してください。ode23s (stiff/Mod.Rosenbrock)
変更された 2 次の Rosenbrock 公式を使用して、次のタイム ステップにおけるモデルの状態を計算します。
ode23s
は 1 ステップ ソルバーであるため、直前の時点における解しか必要となりません。ode23s
は粗い許容誤差の場合にode15s
より効率的であり、ode15s
では解けないスティッフな問題を解くことができます。ode23t (Mod. stiff/Trapezoidal)
"フリー" の内挿を使って台形則を実行することにより、次のタイム ステップにおけるモデルの状態を計算します。
ode23t
は 1 ステップ ソルバーであるため、直前の時点における解しか必要となりません。ode23t
は、問題が適度にスティッフで数値的減衰のない解が必要な場合に使用してください。ode23tb (stiff/TR-BDF2)
陰的なルンゲ・クッタ式である TR-BDF2 をマルチステップで実行すること、つまり、最初の段階で台形則ステップを使い、2 番目の段階で 2 次の後退差分式を使うことによって、次のタイム ステップにおけるモデルの状態を計算します。この過程で、同じ反復行列が 2 つの段階での実行に利用されます。
ode23tb
は粗い許容誤差の場合にode15s
より効率的であり、ode15s
では解けないスティッフな問題を解くことができます。odeN (Nonadaptive)
Nth 次の固定ステップ積分式を使用して、モデルの状態を、状態と中間点で近似された状態導関数の現在の値の陽関数として計算します。
ソルバー自体が固定ステップ ソルバーである間は、Simulink® はステップ サイズをゼロクロッシングで小さくして精度を確保します。
daessc (Simscape™ のソルバー)
Simscape モデルから得られた微分代数方程式系の解を求めて、次のタイム ステップのモデルの状態を計算します。
daessc
は、物理システムのモデル化によって生じた微分代数方程式をシミュレーションするために特別に設計されたロバストなアルゴリズムを提供します。daessc
は Simscape 製品でのみ利用できます。
ヒント
モデルにとって最適なソルバーを決定するには、試してみることが必要です。詳細は、ソルバーの選択基準を参照してください。
高速リスタートでは、ソルバーを変更する場合、モデルを再コンパイルする必要はありません。計算量の多い再コンパイル処理を実行しなくても、実行時に適切なソルバーを選択できます。
最適なソルバーは、許容可能な精度と最短のシミュレーション時間の間でバランスをとることができます。
Simulink ソフトウェアでは、連続ソルバーを指定した場合でも、状態をもたないモデルまたは離散状態しかもたないモデルに対して離散ソルバーが使用されます。
ステップ サイズを小さくすると精度が高まりますが、シミュレーション時間は長くなります。
n
の値が大きくなるほど、ode
n
の計算の複雑度は高くなります。計算の複雑度が高くなると、結果の精度も高まります。
依存関係
[ode1 (Euler)]
、[ode2 (Huen)]
、[ode 3 (Bogacki-Shampine)]
、[ode4 (Runge-Kutta)]
、[ode 5 (Dormand-Prince)]
、[ode 8 (Dormand Prince RK8(7))]
または [離散 (連続状態なし)]
の各固定ステップ ソルバーを選択すると、以下のパラメーターが有効になります。
固定ステップ サイズ (基本サンプル時間)
周期的なサンプル時間の制約
各離散レートを個別のタスクとして扱う
データ転送に対するレート変換を自動的に取り扱う
優先順位の値が高いほどタスクの優先順位が高いことを示す
[odeN (Nonadaptive)]
可変ステップ ソルバーを選択すると、以下のパラメーターが有効になります。
最大ステップ サイズ
積分法
[ode14x (外挿)]
を選択すると、以下のパラメーターが有効になります。
固定ステップ サイズ (基本サンプル時間)
外挿の次数
ニュートンの反復回数
周期的なサンプル時間の制約
各離散レートを個別のタスクとして扱う
データ転送に対するレート変換を自動的に取り扱う
優先順位の値が高いほどタスクの優先順位が高いことを示す
[ode1be (後退オイラー法)]
を選択すると、次のパラメーターが有効になります。
固定ステップ サイズ (基本サンプル時間)
ニュートンの反復回数
周期的なサンプル時間の制約
各離散レートを個別のタスクとして扱う
データ転送に対するレート変換を自動的に取り扱う
優先順位の値が高いほどタスクの優先順位が高いことを示す
[離散 (連続状態なし)]
可変ステップ ソルバーを選択すると、以下のパラメーターが有効になります。
最大ステップ サイズ
データ転送に対するレート変換を自動的に取り扱う
優先順位の値が高いほどタスクの優先順位が高いことを示す
ゼロクロッシング コントロール
時間の許容誤差
連続するゼロクロッシングの数
アルゴリズム
[ode45 (Dormand-Prince)]
、[ode23 (Bogacki-Shampine)]
、[ode113 (Adams)]
または [ode23s (stiff/Mod.Rosenbrock)]
を選択すると、以下のパラメーターが有効になります。
最大ステップ サイズ
最小ステップ サイズ
初期ステップ サイズ
相対許容誤差
絶対許容誤差
形状の保存
連続的な最小ステップ数
データ転送に対するレート変換を自動的に取り扱う
優先順位の値が高いほどタスクの優先順位が高いことを示す
ゼロクロッシング コントロール
時間の許容誤差
連続するゼロクロッシングの数
アルゴリズム
[ode15s (stiff/NDF)]
、[ode23t (Mod. stiff/Trapezoidal
)]
、または [ode23tb (stiff/TR-BDF2)]
を選択すると、以下のパラメーターが有効になります。
最大ステップ サイズ
最小ステップ サイズ
初期ステップ サイズ
ソルバーのリセット メソッド
連続的な最小ステップ数
相対許容誤差
絶対許容誤差
形状の保存
最大次数
データ転送に対するレート変換を自動的に取り扱う
優先順位の値が高いほどタスクの優先順位が高いことを示す
ゼロクロッシング コントロール
時間の許容誤差
連続するゼロクロッシングの数
アルゴリズム
コマンド ライン情報
パラメーター: SolverName または Solver |
値: 'VariableStepAuto' | 'VariableStepDiscrete' | 'ode45' | 'ode23' | 'ode113' | 'ode15s' | 'ode23s' | 'ode23t' | 'ode23tb' | 'daessc' | 'FixedStepAuto' | 'FixedStepDiscrete' |'ode8'| 'ode5' | 'ode4' | 'ode3' | 'ode2' | 'ode1' | 'ode14x' |
既定の設定: 'VariableStepAuto |