適応ゼロクロッシングアルゴリズムを使います
シミュレーションが固まらなくなります
ステップサイズが設定値を下回るか、ゼロクロッシングの 連続発生回数が設定値を超えると、検出を「あきらめて」
次のタイムステップに移ります
ステップサイズ、連続発生回数の
設定で計算精度をコントロールできます
この対処法が おすすめです
このケースから得られた教訓
ゼロクロッシングは本来、計算精度向上のメカニズムです。
– シミュレーション速度を低下させることがありますが、問題にならな い程度なら常に使用するようにしておくことが望ましいでしょう。
– しかし、ゼロクロッシングが「連続で」検出されると、上限回数を超え たところでエラー停止します。
シミュレーション速度・結果に問題があれば、
2
つの対処法 を試してみましょう。– ゼロクロッシングの有効/無効設定 – 適応ゼロクロッシング設定
アジェンダ
まずはここから
–
今すぐ簡単に試せる高速化手法 本質を探ろう!
– 3
つのケースから得られる教訓 (その③) まだある高速化手法
–
アドバンストトピックス・関連情報 まとめ
カテゴリ Tips トラブルシュート
想定レベル 初級 中級 上級
対象ソルバー 連続 離散
可変ステップ 固定ステップ
ケース 3 :
こんな状況に遭遇したことはありませんか?
シミュレーションを実行すると警告メッセージが
…
代数ループを構成するモデルの典型例です
フィードバックされた出力が 同じタイミングで自身の入力に 戻っています
数学的には、代数ループの 入出力関係は代数方程式で 記述されます
常微分方程式のソルバーとは 別に、代数ループソルバーが 機能します
代数ループ
代数ループの困りごとは …
計算コストが増大します
– 代数ループソルバーは数値 探索解法です
– 毎時間ステップで代数解の 探索が実行されます
– 解が得られなければエラーで 停止します
コード生成することができません
– 代数ループを含むモデルからは コード生成を行うことができません – (アクセラレータモードの使用は
可能です(R2011b以降))
代数ループのないモデルが理想です
一見、分かりにくいですが、
こんな代数ループもあります
問題の無さそうなディジタルローパスフィルタですが
…
「直接フィードスルーあり」の ブロック出力が、同じタイミングで
入力に戻されていないか チェックしましょう!
積分手法:後退型オイラー
Discrete-Time Integrator ブロックのヘルプドキュメント
左記と等価なモデル
代数ループ
代数ループの発生箇所は このようにして確認できます
ソルバーの診断設定で、
「代数ループ」の診断レベルを
「エラー」に変更します
シミュレーションを実行すると エラーとともに代数ループの 発生箇所が赤色でハイライト 表示されます