Main Content

シミュレーション精度の確認と改善

シミュレーション精度の確認

  1. モデルのシミュレーションを適切な時間実行します。

  2. 相対許容誤差を 1e-4 に下げるか (既定は 1e-3)、絶対許容誤差を小さくします。

  3. モデルを再度シミュレートします。

  4. 両方のシミュレーションの結果を比較します。

結果が大幅に異なっていなければ、解は収束しています。

開始時にシミュレーションが重要な動作を見逃す場合は、初期ステップ サイズを小さくして、シミュレーションがその動作を飛ばすことのないよう確認します。

不安定なシミュレーション結果

シミュレーション結果が時間が経つにつれ不安定になる場合は、以下を考慮してください。

  • システムが不安定になっている可能性があります。

  • ode15s ソルバーを使用している場合は、最大次数を 2 (ソルバーが A 安定であるための最大次数) に制限してみてください。また、ode23s ソルバーを試用することもできます。

不正確なシミュレーション結果

シミュレーション結果が正確でない場合は、以下を考慮してください。

  • 値がゼロに近づく状態をもつモデルの場合、絶対許容誤差パラメーターが大きすぎると、状態値がゼロに近い領域の周辺で、シミュレーションの取るステップ数が少なすぎることになります。モデル コンフィギュレーション パラメーターの [ソルバー] ペインでこのパラメーター値を小さくするか、Integrator ブロックの Function ブロック パラメーターで個々の状態に合わせて調整してください。

  • 絶対許容誤差を小さくしてもシミュレーション精度が十分改善されない場合は、相対許容誤差パラメーターのサイズを小さくします。この変更で許容誤差を減らし、ステップ サイズを敢えて小さくしてステップ数を増やします。

モデル作成の構成によっても、予想外の結果や不正確なシミュレーション結果が生成される場合があります。

  • サンプル時間を継承する Source ブロックは、たとえば下流のブロックのサンプル時間が変更された場合に、異なるシミュレーション結果を生成することがあります (伝播が継承サンプル時間に影響を与える方法を参照)。

  • 代数ループにある Derivative ブロックは、ソルバーの精度が低下する可能性があります。

関連する例

詳細