このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
“可変ステップソルバー”では,シミュレーション実行中にステップサイズが変化します。モデルの状態が急激に変動しているときは精度を上げるためにステップサイズが小さくなり,モデルの状態の変動が緩慢なときは不必要なステップを取ることを回避するためにステップサイズが大きくなります。ステップサイズの計算は,各ステップで計算のオーバーヘッドを加えますが,ステップの総数は減らすことが可能なため,急激に変化あるいは区分的に連続状態をもつモデルの指定したレベルの精度を保持するために必要なシミュレーション時間が増加します。
[ソルバー]コンフィギュレーションペインの[タイプ]コントロールが[变步
]に設定されている場合は,[ソルバー]コントロールを使用して,いずれかの可変ステップソルバーを選択できます。固定ステップソルバーと同様に,可変ステップソルバーのセットは,離散ソルバーと連続ソルバーの集合で構成されます。ただし,固定ステップソルバーとは異なり,ステップサイズは局所誤差に応じて動的に変化します。
2つのタイプの可変ステップソルバー間の選択は,モデル内のブロックが状態を定義するかどうかと,定義する場合は,定義する状態の種類により異なります。モデルが状態を定義しない,または離散状態のみを定義する場合は,離散ソルバーを選択します。モデルが連続状態をもつ場合,連続ソルバーは,次のタイムステップで連続状態の値を計算するために数値積分を使用します。
メモ
モデルが状態をもたないまたは離散状態のみをもつ場合は,連続ソルバーを指定しても,金宝app仿真软件®は離散ソルバーを使用してモデルをシミュレートします。
可変ステップ離散ソルバーは,モデルが連続状態を含まないときに使用します。そのようなモデルでは,可変ステップ離散ソルバーは,ゼロクロッシングなどのモデルイベントをキャプチャするためにステップサイズを小さくし,シミュレーションの性能を向上することが可能な際にステップサイズを大きくします。
この図に示すモデルには,サンプル時間0.5と0.75に2つの離散正弦波が含まれます。以下のグラフは,モデル内の信号とソルバーステップを可変ステップ離散ソルバーと固定ステップ離散ソルバーのそれぞれについて示したものです。可変ステップソルバーでは,各ブロックからの出力信号を記録するために必要なステップのみが使用されていることが分かります。一方,固定ステップソルバーでは,すべての信号を記録するために固定ステップサイズ(または基本サンプル時間)の0.25でシミュレートする必要があるため,全体として多くのステップが使用されます。
可変ステップソルバーでは,シミュレーション中にステップサイズが動的に変化します。これらの各ソルバーは局所誤差制御を使用して,指定された許容誤差内に収まるようにステップサイズの増減を行います。各タイムステップでのステップサイズの計算は,計算のオーバーヘッドに加えられます。ただし,ステップの総数を減らすことができ、それによって、指定したレベルの精度を維持するために必要なシミュレーション時間を減らせます。
可変ステップ連続ソルバーは,1ステップまたはマルチステップ,単一次数または可変次数,陽的または陰的などのようにさらに分けられます。詳細については,1ステップ連続ソルバーとマルチステップ連続ソルバーを参照してください。
陽的な可変ステップソルバーは,スティッフでない問題用に設計されています。金宝app仿真软件には次の4種類のソルバーが用意されています。
数值
ode23
ode113
奥登
ODEソルバー | 1ステップ法 | マルチステップ法 | 精度の次数 | メソッド |
---|---|---|---|---|
数值 |
X | 中 | ルンゲ・クッタDormand-Prince(4、5)の組 | |
ode23 |
X | 低 | BogackiとShampineによる龙格-库塔(2、3)の組 | |
ode113 |
X | 可変,低から高 | Adams-Bashforth-MoutlonのPECE実装 | |
奥登 |
X | 陽的な固定ステップ連続ソルバーの精度の次数を参照 | 陽的な固定ステップ連続ソルバーの積分手法を参照 |
メモ
シミュレーション速度が重要な場合は,奥登
ソルバーを選択します。たとえば,次のような場合です。
モデルにゼロクロッシングやソルバーのリセットが多数含まれている
モデルのプロファイリング時に失敗したステップがソルバープロファイラーで検出されない
問題がスティッフな場合は,陰的な可変ステップソルバーのいずれかを使用してみてください。
ode15s
ode23s
ode23t
ode23tb
ODEソルバー | 1ステップ法 | マルチステップ法 | 精度の次数 | ソルバーリセットメソッド | 最大次数 | メソッド |
---|---|---|---|---|---|---|
ode15s |
X | 可変,低から中 | X | X | 数値微分式(NDF) | |
ode23s |
X | 低 | 変更された2次の。公式 | |||
ode23t |
X | 低 | X | 内挿を使用した台形則 | ||
ode23tb |
X | 低 | X | TR-BDF2 |
ode15s
、ode23t
,およびode23tb
に対しては,[ソルバーのリセットメソッド]のドロップダウンメニューがコンフィギュレーションペインの[ソルバーの詳細]セクションに表示されます。このパラメーターは,たとえばゼロクロッシング検出などによって発生したリセットをソルバーが処理する方法を制御します。使用可能なオプションは,[高速]
と[ロバスト]
です。[高速]
は,ソルバーがそのリセット時にヤコビアンを再計算しないことを指定し,[ロバスト]
は再計算を指定します。結果として,[高速]
設定では計算は速くなりますが,場合によっては小さなステップサイズを使用することもあります。このような場合のテストでは,各設定を使用してシミュレーションを実行し,結果を比較します。結果に差が見られない場合は,[高速]
設定を問題なく使用して,時間を節約できます。結果が大きく異なる場合は,高速シミュレーションのステップサイズを削減してみてください。
ode15s
ソルバーに対しては,ソルバーが適用する数値微分式(NDF)の最大次数を選択できます。ode15s
では1次~ 5次の方程式を使用するので,最大的订单
パラメーターを使用して次数1 ~ 5を選択できます。スティッフな問題に対しては,2次から始めてみてください。
次の表は,陰的な可変ステップソルバーのアプリケーションに関するヒントをまとめています。これらのソルバーの動作を比較した例については,スティッフなモデルを使った可変ステップソルバーの調査を参照してください。
可変ステップソルバーは,標準制御法を使用してタイムステップごとに局所誤差を監視します。各タイムステップの間,ソルバーはステップの終端で状態値を計算し,局所誤差,すなわちこれらの状態値の予測誤差も判別します。その後で,局所誤差を,相対的許容誤差(rtol)と絶対的許容誤差(atol)の関数である許容誤差と比較します。局所誤差が任意の状態に対する許容誤差より大きい場合には,ソルバーはステップサイズを小さくして再び試みます。
下の図は,状態のプロットと,相対的許容誤差と絶対的許容誤差が許容誤差を決める領域を示しています。
モデルには[コンフィギュレーションパラメーター]ダイアログボックスの[ソルバー]ペインで,グローバル絶対許容誤差を設定できます。この許容誤差モデルのすべての状態に適用されます。汽车
または実数スカラーを指定できます。汽车
(既定)を指定すると,仿金宝app真软件は各状態に対する絶対許容誤差を,相対許容誤差に基づいて初期設定します。相対許容誤差が1 e - 3より大きい場合,abstol
は1 e-6に初期設定されます。ただし,reltol
が1 e - 3より小さい場合,その状態に対するabstol
はreltol * 1 e - 3
に初期設定されます。シミュレーションが進行すると、各状態に対する絶対許容誤差は、その時点までの状態の最大値に、その状態の相対許容誤差を掛け合わせたものに再設定されます。したがって、状態が 0 から 1 に変化しreltol
が1 e - 3の場合は,abstol
は1 e-6に初期設定され,シミュレーションの終わりには1 e - 3になります。1000年状態が0からに変化した場合,abstol
は1に変更されます。
ここで,状態が0から1に変化し,reltol
が1军医に設定されている場合,abstol
は1 eに初期設定され,シミュレーションの終わりには1军医の値になります。
絶対的許容誤差の初期値の計算結果が適切でない場合,自分で適切な値を指定することができます。絶対的許容誤差に対する適切な値を決定するには,シミュレーションを複数回実行する必要があります。また,AutoScaleAbsTol
パラメーターの有効または無効を切り替えることによって,絶対許容誤差も同様にその[自動]
設定に適応するかどうかを指定できます。詳細については,絶対許容誤差を自動的にスケールを参照してください。
一部のブロックでは,計算したり出力を定義したりするモデルの状態を解くために絶対許容誤差の値を指定できます。
これらのブロックに対してユーザーが指定した絶対許容誤差値は,[コンフィギュレーションパラメーター]ダイアログボックスでのグローバル設定値をオーバーライドします。たとえば,モデルの状態が大きく変化するなどの理由のため,グローバル設定値ではすべてのモデル状態の誤差を十分に制御できない場合は,グローバル設定値をオーバーライドできます。ブロックの絶対許容誤差値は次の値に設定できます。
汽车
- - - - - -1
(汽车
に同じ)
积极的标量
真正的向量
(ブロック内の対応する連続状態の数と同じ次元)
絶対許容誤差を設定する場合,低すぎる値を設定すると状態値のゼロ近辺でのソルバーのステップ数が多くなりすぎるため注意が必要です。結果的に,シミュレーションの速度が低下します。
反対に,高すぎる絶対許容誤差を設定した場合には,モデル内の1つ以上の連続状態がゼロに近づくにつれて,結果の精度が低くなる可能性があります。
シミュレーションが完了した後に,絶対許容誤差を低くして再度シミュレーションを実行することによって,結果の精度を検証できます。2回のシミュレーションの結果が大幅に異なっていなければ,十分な精度が得られていると考えられます。