主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

金宝appの可変ステップソルバー

“可変ステップソルバー”では,シミュレーション実行中にステップサイズが変化します。モデルの状態が急激に変動しているときは精度を上げるためにステップサイズが小さくなり,モデルの状態の変動が緩慢なときは不必要なステップを取ることを回避するためにステップサイズが大きくなります。ステップサイズの計算は,各ステップで計算のオーバーヘッドを加えますが,ステップの総数は減らすことが可能なため,急激に変化あるいは区分的に連続状態をもつモデルの指定したレベルの精度を保持するために必要なシミュレーション時間が増加します。

[ソルバー]コンフィギュレーションペインの[タイプ]コントロールが[变步]に設定されている場合は,[ソルバー]コントロールを使用して,いずれかの可変ステップソルバーを選択できます。固定ステップソルバーと同様に,可変ステップソルバーのセットは,離散ソルバーと連続ソルバーの集合で構成されます。ただし,固定ステップソルバーとは異なり,ステップサイズは局所誤差に応じて動的に変化します。

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 陽的な固定ステップ連続ソルバー精度の次数を参照 陽的な固定ステップ連続ソルバー積分手法を参照

ODEソルバー 使用時
数值

一般に,数值は,ほとんどの問題に対して最初の試みとして適用する最良のソルバーです。ルンゲ・クッタ(4、5)ソルバーは,誤差の4次推定を行う5次法です。このソルバーでも4次の内挿を使用して,イベント位置選定とより滑らかなプロットを実現します。

数值の計算が遅い場合,問題はスティッフである可能性があるため,陰的なソルバーが必要になります。

ode113

厳密な許容誤差の問題または計算量の多い問題に対しては,Adams-Bashforth-Moulton PECEソルバーが数值よりも効率的である場合があります。

ode23

ode23は,粗い誤差許容量およびある程度のスティッフ性が存在するときに,数值ソルバーよりも効率的な場合があります。このソルバーは,ステップの最後に計算された値と勾配に3次エルミート内挿を適用することで正確な解をもたらします。

奥登 奥登は,次数が[ソルバーの次数)パラメーターによって決定される非適応型のルンゲ・クッタ積分を使用するソルバーです。奥登では,(最大ステップサイズ]パラメーターによって決定される固定ステップサイズを使用しますが,ステップサイズを小さくすることでゼロクロッシングや離散サンプルヒットなどの特定のソルバーイベントを取得できます。

メモ

シミュレーション速度が重要な場合は,奥登ソルバーを選択します。たとえば,次のような場合です。

  • モデルにゼロクロッシングやソルバーのリセットが多数含まれている

  • モデルのプロファイリング時に失敗したステップがソルバープロファイラーで検出されない

陰的な可変ステップ連続ソルバー

問題がスティッフな場合は,陰的な可変ステップソルバーのいずれかを使用してみてください。

  • ode15s

  • ode23s

  • ode23t

  • ode23tb

ODEソルバー 1ステップ法 マルチステップ法 精度の次数 ソルバーリセットメソッド 最大次数 メソッド
ode15s X 可変,低から中 X X 数値微分式(NDF)
ode23s X 変更された2次の。公式
ode23t X X 内挿を使用した台形則
ode23tb X X TR-BDF2

ソルバーリセットメソッド

ode15sode23t,およびode23tbに対しては,[ソルバーのリセットメソッド]のドロップダウンメニューがコンフィギュレーションペインの[ソルバーの詳細]セクションに表示されます。このパラメーターは,たとえばゼロクロッシング検出などによって発生したリセットをソルバーが処理する方法を制御します。使用可能なオプションは,[高速][ロバスト]です。[高速]は,ソルバーがそのリセット時にヤコビアンを再計算しないことを指定し,[ロバスト]は再計算を指定します。結果として,[高速]設定では計算は速くなりますが,場合によっては小さなステップサイズを使用することもあります。このような場合のテストでは,各設定を使用してシミュレーションを実行し,結果を比較します。結果に差が見られない場合は,[高速]設定を問題なく使用して,時間を節約できます。結果が大きく異なる場合は,高速シミュレーションのステップサイズを削減してみてください。

最大次数

ode15sソルバーに対しては,ソルバーが適用する数値微分式(NDF)の最大次数を選択できます。ode15sでは1次~ 5次の方程式を使用するので,最大的订单パラメーターを使用して次数1 ~ 5を選択できます。スティッフな問題に対しては,2次から始めてみてください。

陰的な可変ステップソルバーを選択するためのヒント

次の表は,陰的な可変ステップソルバーのアプリケーションに関するヒントをまとめています。これらのソルバーの動作を比較した例については,スティッフなモデルを使った可変ステップソルバーの調査を参照してください。

ODEソルバー 用途に関するヒント
ode15s

ode15sは,数値微分式(NDF)に基づく可変次数ソルバーです。NDFは,後退差分式快速公车提供(齿轮法としても知られている)と関連していますが,より効率的です。ode15sソルバーは,ヤコビ行列を数値的に生成します。問題がスティッフな場合,数值がうまくいかない,または効率が非常に悪い場合には,ode15sを試してみてください。通常は,NDFの最大次数を2に制限することから始めてみてください。

ode23s

ode23sは2次の。の公式を改良したものをベースにしています。この関数は,単段階ソルバーであるため,粗い許容範囲の場合には関数ode15sよりも効率的な場合があります。ode15s同様、ode23sはヤコビ行列を数値的に生成してくれます。ただし,ode15sでは効果的でない特定のスティッフな問題を解くことができます。

ode23t

関数ode23tソルバーは”フリー”内挿を使用して台形則を実行します。問題が適度にスティッフで数値的減衰のない解が必要な場合に,このソルバーを使用してください(振動の動きのモデルを作成したときにエネルギーが放散されません)。

ode23tb

ode23tbは2つのステージをもつ陰的な龙格-库塔法であるTR-BDF2を実装したものです。最初のステージは台形則ステップで,2番目のステージでは2次の後退差分式を使用します。この課程で,両方のステージの評価には同じ反復行列が使用されます。ode23sのように,このソルバーは大まかな許容誤差においてode15sより効率的な可能性があります。

メモ

スティッフな問題の場合,解は積分間隔に比較して非常に短い時間スケールで変化する可能性がありますが,重要な解はそれよりはるかに長い時間スケールで変化します。スティッフな問題用に設計されていない手法は,可能な限り高速な変化を解くため十分に小さなタイムステップで計算を行うため,解がゆっくりと変化する区間に対しては効果的ではありません。詳細については,夏平,l.f.,“常微分方程的数值解”,查普曼&大厅,1994を参照してください。

可変ステップソルバーの許容誤差

局所誤差

可変ステップソルバーは,標準制御法を使用してタイムステップごとに局所誤差を監視します。各タイムステップの間,ソルバーはステップの終端で状態値を計算し,局所誤差,すなわちこれらの状態値の予測誤差も判別します。その後で,局所誤差を,相対的許容誤差(rtol)と絶対的許容誤差(atol)の関数である許容誤差と比較します。局所誤差が任意の状態に対する許容誤差より大きい場合には,ソルバーはステップサイズを小さくして再び試みます。

  • "相対許容誤差"は,各状態のサイズに関して誤差を測定します。相対的許容誤差は,状態の値の割合を表します。既定の1 e - 3は計算された状態が0.1%以内の精度であることを意味します。

  • "絶対許容誤差"は,しきい値誤差値です。この許容誤差は,測定された状態の値がゼロに近づくにつれて許容可能な誤差を表します。

    ソルバーでは,番目の状態に対する誤差eは,次式を満たす必要があります。

    e 马克斯 r t o l × | x | 一个 t o l

下の図は,状態のプロットと,相対的許容誤差と絶対的許容誤差が許容誤差を決める領域を示しています。

絶対許容誤差

モデルには[コンフィギュレーションパラメーター]ダイアログボックスの[ソルバー]ペインで,グローバル絶対許容誤差を設定できます。この許容誤差モデルのすべての状態に適用されます。汽车または実数スカラーを指定できます。汽车(既定)を指定すると,仿金宝app真软件は各状態に対する絶対許容誤差を,相対許容誤差に基づいて初期設定します。相対許容誤差が1 e - 3より大きい場合,abstolは1 e-6に初期設定されます。ただし,reltolが1 e - 3より小さい場合,その状態に対するabstolreltol * 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回のシミュレーションの結果が大幅に異なっていなければ,十分な精度が得られていると考えられます。