メインコンテンツ

絶対許容誤差

ソルバーの許容誤差計算の絶対許容誤差

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

説明

[絶対許容誤差] パラメーターは、状態値がゼロに近づくときのソルバーの最大許容誤差を指定します。

各タイム ステップでソルバーは次のことをします。

  • 各状態の値を計算する

  • 各状態の計算における誤差を推定する

  • 相対許容誤差、絶対許容誤差、および状態値を使用して各状態の許容誤差を決定する

各タイム ステップで状態ごとに考慮される許容誤差は、相対許容誤差または絶対許容誤差のいずれか大きい方の許容誤差によって決定されます。ソルバーは、相対許容誤差と状態値を乗算することで、相対許容誤差に基づいて許容誤差を計算します。

ei = reltol * |x|,

ここで、

  • ei は、そのタイム ステップにおける相対許容誤差に基づいた許容誤差です。

  • reltol は、[相対許容誤差] パラメーターに指定された値です。

  • x は状態値です。

ei[絶対許容誤差] パラメーターに指定された値よりも大きい場合、相対許容誤差によってそのタイム ステップにおけるその状態の許容誤差が決定されます。絶対許容誤差が ei より大きい場合、絶対許容誤差によってそのタイム ステップにおけるその状態の許容誤差が決定されます。一般に、絶対許容誤差は状態値がゼロに近づくときに適用されます。

詳細については、可変ステップ ソルバーの許容誤差を参照してください。

ローカル ソルバーを使用するように参照モデルを構成した場合、参照モデルの [絶対許容誤差] パラメーターによって、ローカル ソルバーの許容誤差計算の絶対許容誤差が指定されます。 (R2025a 以降)

依存関係

このパラメーターは次の場合に有効になります。

  • ソルバーの [タイプ][可変ステップ] に設定します。

  • [ソルバー] パラメーターを [離散 (連続状態なし)] 以外の値に設定します。

設定

auto | 正のスカラー数

既定では、値は auto であり、シミュレーション中、絶対許容誤差の値が状態値に基づいてスケーリングされます。初期絶対許容誤差は相対許容誤差の値に基づいて決定されます。

reltol ≤ 1e-3 の場合は abstol = reltol * 1e-3

reltol > 1e-3 の場合は abstol = 1e-6

ここで、abstol は絶対許容誤差、reltol は相対許容誤差です。

シミュレーションの進行に伴い、各状態に対する絶対許容誤差は、その状態が現在のタイム ステップまでに到達した最大値に相対許容誤差を乗算した値にスケーリングされます。

abstol = xmax * reltol

たとえば、ある状態がシミュレーション中に値 1 に達するとします。この場合、相対許容誤差が 1e-4 であれば、絶対許容誤差は 1e-7 に初期化され、シミュレーションの終わりまでに値 1e-4 に達します。

絶対許容誤差を正のスカラー数として指定する場合は、シミュレーション中に絶対許容誤差を状態の値に基づいてスケーリングするかどうかを [絶対許容誤差を自動的にスケール] パラメーターを使用して選択できます。

ヒント

  • 一部のブロックでは、ブロック パラメーターを使用して、それらのブロックの状態に対する許容誤差を計算する際に使用する絶対許容誤差の値を指定できます。ブロック パラメーターの値を指定すると、そのブロックの状態で許容される状態誤差を計算するときに、モデル コンフィギュレーション パラメーターの値の代わりにブロック パラメーターの値が使用されます。これには次のブロックが含まれます。

    モデルの状態が大きく変化する場合は、ブロック パラメーターの値を指定することを検討してください。

  • シミュレーション結果が正確でないと考えられる場合やモデル内に値がゼロに近づく状態がある場合は、絶対許容誤差が大きすぎる可能性があります。

  • 許容誤差を小さく指定すると、状態値がゼロに近い時間点付近でソルバーが必要以上に多くのステップを取る可能性があるため、シミュレーションが遅くなることがあります。

  • シミュレーションの精度を確認するには、絶対許容誤差を小さくしてモデルのシミュレーションをもう一度実行します。2 つのシミュレーションの結果が大幅に異なっていなければ、解は収束しています。

プログラムでの使用

パラメーター: AbsTol
型: string | 文字ベクトル
値: "auto" | 正のスカラー数
既定の設定: "auto"

バージョン履歴

R2006a より前に導入