Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ソルバー

シミュレーション用の状態と出力を計算するソルバー

モデル コンフィギュレーション ペイン: ソルバー

説明

シミュレーション時または生成コードでモデルの状態を計算するために使用するソルバーを選択します。ソルバーは、システムを表す一連の常微分方程式を解く過程で、シミュレーションの次のタイム ステップも決定します。このソフトウェアには、複数のタイプの固定ステップと可変ステップのソルバーが用意されています。

可変ステップ ソルバー

可変ステップ ソルバーは、システムのダイナミクスと指定された許容誤差に基づいて、ソルバーが状態と出力を計算するシミュレーション時間ヒット間の間隔を調整します。ほとんどの可変ステップ ソルバーについて、以下を含む追加のパラメーターを構成できます。

固定ステップ ソルバー

一般に、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 ソルバーに対する計算効率の高い固定ステップの代替方法として使用できます。

すべて展開する

モデル vdp を開きます。

mdl = "vdp";
open_system(mdl)

The model vdp.

モデルに使用するソルバーをソフトウェアが選択できるようにするには、[タイプ] パラメーターを [Fixed-step] または [Variable-step] に指定し、[ソルバー] パラメーターを [auto] に設定します。この例では、モデルに可変ステップ ソルバーを選択するようにソフトウェアを構成します。

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスを開くには、[モデル化] タブで [モデル設定] をクリックします。

  2. [ソルバー] ペインで、ソルバーの [タイプ][Variable-step] に設定し、[ソルバー] パラメーターを [auto (Automatic solver selection)] に設定します。

  3. [OK] をクリックします。

または、関数 set_param を使用してパラメーターの値をプログラムで設定します。

set_param(mdl,"SolverType","Variable-step", ...
    "SolverName","VariableStepAuto")

モデルをシミュレートします。[シミュレーション] タブで [実行] をクリックします。または、関数 sim を使用します。

out = sim(mdl);

シミュレーションの初期化の一環として、モデルが解析されてソルバーが選択されます。Simulink エディターの下部のステータス バーで、選択されたソルバーが右側に示されます。このモデルについては、ode45 ソルバーが選択されます。

The right side of the status bar shows the selected solver as auto(ode45).

選択されたソルバー パラメーターに関する詳細情報を表示するには、選択されたソルバーを示すステータス バーのテキストをクリックします。[ソルバー情報] メニューには、選択されたソルバーおよび [最大ステップ サイズ] パラメーターに対して選択された値が表示されます。このシミュレーションでは、ソルバーは最大ステップ サイズ 0.4 を使用します。

The pointer is on the text in the status bar that indicates the selected solver. The Solver information menu shows selected parameter values above three buttons.

ソルバーの選択と最大ステップ サイズを制限する場合は、ソルバー パラメーターの値を明示的に指定します。[ソルバー情報] メニューで、[提案された設定を受け入れる] をクリックします。

または、関数 set_param を使用してパラメーターの値をプログラムで指定することもできます。

set_param(mdl,"SolverName","ode45","MaxStep","0.4")

パラメーター値を明示的に指定すると、ステータス バーと [ソルバー情報] メニューのソルバー情報には、パラメーター値の自動的な選択が示されなくなります。

The Solver information menu is opened above the right side of the status bar. The solver information in the status bar and Solver information menu no longer show auto() around the solver parameter values.

ヒント

  • 最適なソルバーは、許容可能な精度と最短のシミュレーション時間の間でバランスをとることができます。モデルにとって最適なソルバーを決定するには、試してみることが必要です。詳細については、ソルバーの選択を参照してください。

  • ローカル ソルバーを使用するように参照モデルを構成する場合、最上位のソルバーは可変ステップと固定ステップのどちらのソルバーでもかまいませんが、ローカル ソルバーは固定ステップ ソルバーでなければなりません。詳細については、Use Local Solvers in Referenced Modelsを参照してください。

  • 高速リスタートを使用するときは、モデルを再コンパイルせずにシミュレーション用のソルバーを変更できます。

  • 連続ソルバーを指定した場合でも、状態をもたないモデルや離散状態しかもたないモデルに対しては離散ソルバーが使用されます。

推奨設定

次の表は、このパラメーターの推奨値をコード生成に関連する考慮事項に基づいてまとめたものです。

アプリケーション設定
デバッグ影響なし
トレーサビリティ影響なし
効率性影響なし
安全対策離散 (連続状態なし)

プログラムでの使用

パラメーター: 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 より前に導入