ソルバー
シミュレーション用の状態と出力を計算するソルバー
モデル コンフィギュレーション ペイン: ソルバー
説明
[ソルバー] パラメーターは、シミュレーション時または生成コードでモデルの状態を計算するソルバーを指定します。ソルバーは、モデルが実装するシステムを表す一連の常微分方程式を解く過程で、シミュレーションの次のタイム ステップも決定します。
参照モデルの [モデルの参照時にローカル ソルバーを使用] パラメーターを有効にしている場合、その参照モデルの [ソルバー] パラメーターはローカル ソルバーとして使用するソルバーを指定します。ローカル ソルバーにより、別個の微分方程式セットとして参照モデルが解かれます。最上位のソルバーは固定ステップと可変ステップのどちらのソルバーでもかまいませんが、ローカル ソルバーは固定ステップ ソルバーでなければなりません。詳細については、Use Local Solvers in Referenced Modelsを参照してください。
このソフトウェアには、複数のタイプの固定ステップと可変ステップのソルバーが用意されています。
可変ステップ ソルバー
可変ステップ ソルバーは、システムのダイナミクスと指定された許容誤差に基づいて、ソルバーが状態と出力を計算するシミュレーション時間ヒット間の間隔を調整します。ほとんどの可変ステップ ソルバーについて、以下を含む追加のパラメーターを構成できます。
固定ステップ ソルバー
一般に、ode14x
および ode1be
以外の固定ステップ ソルバーでは、次の式を使用して次のステップを計算します。
X(n+1) = X(n) + h dX(n)
ここで X は状態、h はステップ サイズ、dX は状態微分です。dX(n) は、メソッドの順序に応じて 1 つ以上の導関数評価を使用し、特定のアルゴリズムによって計算されます。
ほとんどの固定ステップ ソルバーについて、以下を含む追加のパラメーターを構成できます。
設定
自動 (ソルバーの自動選択)
(既定値) | 離散 (連続状態なし)
| ...一般に、ソルバーの自動選択により、各モデルに適したソルバーが選択されます。ソルバーの選択は、システムのダイナミクスや解の安定性など、いくつかの要因に依存します。詳細については、ソルバーの選択を参照してください。
このパラメーターに対して使用できるオプションは、ソルバーの [タイプ] で選択する値に依存します。
自動 (ソルバーの自動選択)
モデルの状態を計算するための可変ステップ ソルバーがモデルのダイナミクスに基づいて選択されます。ほとんどのモデルについては、適切なソルバーが選択されます。
離散 (連続状態なし)
このソルバーは、状態をもたないモデルまたは離散状態しかもたないモデルにのみ使用します。
discrete
可変ステップ ソルバーは、モデルでの状態の変化の割合に依存するステップ サイズを追加することで次のシミュレーション時間ヒットを計算します。ode45 (Dormand-Prince)
ソルバーを手動で選択する場合、ほとんどのシステムに対しては
ode45
が最初の選択肢として適しています。ode45
ソルバーは、Dormand-Prince の組とも呼ばれる陽的なルンゲ・クッタ (4,5) 式を数値積分に使用してモデルの状態を計算します。ode23 (Bogacki-Shampine)
ode23
ソルバーは、Bogacki-Shampine の組とも呼ばれる陽的なルンゲ・クッタ (2,3) 式を数値積分に使用してモデルの状態を計算します。許容誤差が粗く、ある程度のスティッフがある場合、
ode23
ソルバーの方が[ode45]
ソルバーより効率的です。ode113 (Adams)
ode113
ソルバーは、可変次数の Adams-Bashforth-Moulton PECE 数値積分手法を使用してモデルの状態を計算します。ode113
ソルバーでは、現在の解を計算するために、それよりも前の複数の時点の解を使用します。許容誤差が厳しい場合、
ode113
ソルバーの方がode45
より効率的なことがあります。ode15s (stiff/NDF)
ode15s
ソルバーは、可変次数の数値微分式 (NDF) を使用してモデルの状態を計算します。NDF は、Gear 法とも呼ばれる後退差分式 (BDF) と関連していますが、それよりも効率的です。ode15s
ソルバーでは、現在の解を計算するために、それよりも前の複数の時点の解を使用します。ode15s
ソルバーはスティッフな問題の場合に効率的です。ode45
ソルバーがうまく機能しない場合や非効率な場合は、このソルバーを試してください。ode23s (stiff/Mod.Rosenbrock)
ode23s
ソルバーは、変更された 2 次の Rosenbrock 公式を使用してモデルの状態を計算します。ode23s
ソルバーでは、現在のタイム ステップの解を計算するために、直前のタイム ステップの解のみを使用します。ode23s
ソルバーは、許容誤差が粗い場合に[ode15s]
ソルバーより効率的であり、[ode15s]
では解けないスティッフな問題を解くことができます。ode23t (mod. stiff/Trapezoidal)
ode23t
ソルバーは、台形則の実装を使用してモデルの状態を計算します。ode23t
ソルバーでは、現在のタイム ステップの解を計算するために、直前のタイム ステップの解のみを使用します。ode23t
ソルバーは、適度にスティッフで数値的減衰のない解が必要な問題に使用します。ode23tb (stiff/TR-BDF2)
ode23tb
ソルバーは、TR-BDF2 のマルチステップの実装を使用してモデルの状態を計算します。これは、第 1 段階が台形則であり、第 2 段階が 2 次の後退差分式で構成される陰的なルンゲ・クッタ式です。構造上、両方の段階で同じ反復行列が使用されます。ode23tb
ソルバーは、許容誤差が粗い場合に[ode15s]
より効率的であり、[ode15s]
ソルバーでは解けないスティッフな問題を解くことができます。odeN (Nonadaptive)
odeN
ソルバーは、非適応型の固定ステップ積分式を使用して、モデルの状態を状態の現在の値と中間点で近似された状態微分の陽関数として計算します。非適応型の
odeN
ソルバーでは、誤差の制約を満たすためのシミュレーション ステップ サイズの調整は行われませんが、ゼロクロッシング検出と離散サンプル時間の場合にステップ サイズが小さくなることがあります。daessc (DAE solver for Simscape™)
daessc
ソルバーは、Simscape を使用してモデル化された微分代数方程式系を解くことでモデルの状態を計算します。daessc
ソルバーは、物理システムのモデル化によって生じる微分代数方程式をシミュレートするために特別に設計されたロバストなアルゴリズムを提供します。daessc
ソルバーは Simscape 製品でのみ使用できます。
自動 (ソルバーの自動選択)
モデルの状態を計算するための固定ステップ ソルバーがモデルのダイナミクスに基づいて選択されます。ほとんどのモデルについては、適切なソルバーが選択されます。
離散 (連続状態なし)
このソルバーは、状態をもたないモデルまたは離散状態しかもたないモデルにのみ使用します。
discrete
固定ステップ ソルバーでは、離散状態を更新するためにモデルのブロックが必要となります。離散固定ステップ ソルバーではゼロクロッシング検出はサポートされません。
ode8 (Dormand-Prince)
ode8
ソルバーは、8 次 Dormand-Prince 式を使用して、モデルの状態を状態の現在の値と中間点で近似された状態微分の陽関数として計算します。ode5 (Dormand-Prince)
ode5
ソルバーは、5 次 Dormand-Prince 式を使用して、モデルの状態を状態の現在の値と中間点で近似された状態微分の陽関数として計算します。ode4 (Runge-Kutta)
ode4
ソルバーは、4 次ルンゲ・クッタ (RK4) 式を使用して、モデルの状態を状態の現在の値と状態微分の陽関数として計算します。ode3 (Bogacki-Shampine)
ode3
ソルバーは、モデルの状態を状態の現在の値と状態微分の陽関数として計算します。このソルバーでの状態微分の計算には、Bogacki-Shampine 式の積分手法が使用されます。ode2 (Heun)
ode2
ソルバーは、Heun 積分手法を使用して、モデルの状態を状態の現在の値と状態微分の陽関数として計算します。ode1 (Euler)
ode1
ソルバーは、オイラー積分手法を使用して、モデルの状態を状態の現在の値と状態微分の陽関数として計算します。このソルバーでは、高次のソルバーよりも必要な計算量が少なくなりますが、精度が比較的低くなります。ode14x (外挿)
ode14x
ソルバーは、ニュートン法と現在の値からの外挿を組み合わせて使用して、モデルの状態を状態と次のタイム ステップにおける状態微分の陰関数として計算します。次の例では、X が状態、dX が状態微分、h がステップ サイズです。X(n+1) - X(n)- h dX(n+1) = 0
このソルバーでは、ステップあたりの必要な計算量が陽的なソルバーより多くなりますが、一定のステップ サイズでの精度は高くなります。
ode1be (後退オイラー法)
ode1be
ソルバーは、固定の数のニュートン反復を使用し、固定の計算コストが発生する、後退オイラー法型のソルバーです。ode1be
ソルバーは、ode14x
ソルバーに対する計算効率の高い固定ステップの代替方法として使用できます。
例
ヒント
最適なソルバーは、許容可能な精度と最短のシミュレーション時間の間でバランスをとることができます。モデルにとって最適なソルバーを決定するには、試してみることが必要です。詳細については、ソルバーの選択を参照してください。
高速リスタートを使用するときは、モデルを再コンパイルせずにシミュレーション用のソルバーを変更できます。 (R2021b 以降)
連続ソルバーを指定した場合でも、状態をもたないモデルや離散状態しかもたないモデルに対しては離散ソルバーが使用されます。
推奨設定
次の表は、このパラメーターの推奨値をコード生成に関連する考慮事項に基づいてまとめたものです。
アプリケーション | 設定 |
---|---|
デバッグ | 影響なし |
トレーサビリティ | 影響なし |
効率性 | 影響なし |
安全対策 | 離散 (連続状態なし) |
プログラムでの使用
パラメーター: SolverName または Solver |
型: string | 文字ベクトル |
可変ステップ ソルバーの値: "VariableStepAuto" | "VariableStepDiscrete" | "ode45" | "ode23" | "ode113" | "ode15s" | "ode23s" | "ode23t" | "ode23tb" | "odeN" | "daessc" |
固定ステップ ソルバーの値: "FixedStepAuto" | "FixedStepDiscrete" | "ode8" | "ode5" | "ode4" |"ode3" | "ode2" | "ode1" | "ode14x" | "ode1be" |
既定の設定: "VariableStepAuto" |
バージョン履歴
R2006a より前に導入