simulink Integratorにおけるエラー

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

답변 (1개)

Toshinobu Shintai
Toshinobu Shintai 2020년 7월 8일

0 개 추천

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

댓글 수: 4

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

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Simulink 環境のカスタマイズ에 대해 자세히 알아보기

제품

릴리스

R2020a

질문:

2020년 7월 7일

댓글:

2020년 7월 12일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!