MATLAB Answers

simulink Integratorにおけるエラー

31 views (last 30 days)
Yuriko Muranaka
Yuriko Muranaka on 7 Jul 2020 at 5:48
Commented: Toshinobu Shintai on 12 Jul 2020 at 2:44
添付のシミュレーションを書いて実行してみたのですが,以下のエラーが出ました.
エラー: Lag_main (line 19)
ブロック 'Lagrange/Integrator' の時間 0.0 における状態 '1' の導関数が有限ではありません。シミュレーションを停止します。解に特異点が存在する可能性があります。そうでない場合は、(固定ステップ サイズを小さくする、または許容誤差を厳しくすることによって) ステップ サイズを減らしてみてください
固定ステップサイズを小さくしてみたのですが,解決しませんでした.
エラーの解決方法を教えていただきたいです.

  0 Comments

Sign in to comment.

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 8 Jul 2020 at 10:16
「Trajectory」というMATLAB Functionブロックで除算(正確には"\"という行列の演算)が行われており、そこでゼロ割りが発生しています。
おそらくそれが原因で正しく積分計算が行えていません。修正してみてください。

  4 Comments

Show 1 older comment
Toshinobu Shintai
Toshinobu Shintai on 11 Jul 2020 at 0:54
「simout.time」ではなくて「out.simout.Time」が正しい表記となります。今の「Lagrange.slx」というモデルファイルの設定ではログを全て「out」という変数に格納するように設定されています。
Yuriko Muranaka
Yuriko Muranaka on 12 Jul 2020 at 1:41
ご回答いただきありがとうございます.
修正してみたのですが,依然,以下のエラーが出てしまします.
名前 out.simout.Time を解決できません。
エラー: drawLag (line 18)
for i=1:length(out.simout.Time)
エラー: Lag_main (line 21)
drawLag
修正したものを添付いたします.
上記のエラーの解決方法を教えていただきたいです.
よろしくお願いいたします.
Toshinobu Shintai
Toshinobu Shintai on 12 Jul 2020 at 2:44
モデルを「sim」コマンドで実行する場合、以下のように返り値を指定しないと、ansという変数に自動的に格納されます。
out = sim(filename);
また、実行後のoutの中身をワークスペースからダブルクリックすると、構造を確認することができます。「out.simout.time」「out.simout.signals.values」に時間と値が格納されていることが分かると思います。
いろいろな場面で使えますので、是非覚えておいてください。

Sign in to comment.

Categories

Products


Release

R2020a