• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オンオフ動作のある回路をオイラー法で解析したい)

オンオフ動作のある回路をオイラー法で解析したい

このQ&Aのポイント
  • オンオフ動作のある回路をC言語を用いたオイラー法で解析する方法を相談したい。
  • オンオフ動作のある回路を解析するために、オイラー法を使用してC言語でプログラムを書いていますが、満足な結果が得られません。
  • オンオフ動作の回路を解析するためには、周期的にオンとオフの切り替わりを考慮しながらオイラー法を適用するプログラムを書く必要があります。どのようにプログラムを改善すればよいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

>    if (0 <= t1 < d*T) { この式は間違えてます。C言語ではこういう表記はできません。 こう表記すると、「(0 <= t1) < d*T」と評価されますので、 「0 <= t1」を評価した結果(0 or 1)と d*T を比較することなってしまいます。 t1が0とd*Tの範囲内かどうかを調べるのなら、 >    if (0 <= t1 && t1 < d*T) { としてください。

jackal777
質問者

お礼

まさにここが間違えていました!! 最も基本的なところを忘れていました。 && で,きちんとデータが出て, シミュレータと同じ波形を描くことができました。 自分では気付きにくいところ,本当に助かりました。 ありがとうございます。

その他の回答 (1)

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

確認です。 >これで解析しても全部printfでは0しか表示されず,きちんと格納されていないのか,とにかく満足な結果が得られません。 printf()はどこに入れていて、どの値を表示していますか? >n = (int)( t/T );     //int型にキャスト intにキャストした場合、整数値しかとれませんが問題はありませんか? 質問内で使用しているすべての変数の型は? 実行時の「T」の値は? ifの条件式の優先順位に問題はありませんか? 複合条件の場合、優先して確認する式には()をつけておく方がいいです。

jackal777
質問者

お礼

回答ありがとうございました。 うっかり,if文の中の範囲を書き間違えていました。 if (0 <= t1 < d*T) →if (0 <= t1 && t1 < d*T) としたら直って,無事データを得ることができました。

関連するQ&A