fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define R 3000 // 抵抗 (Ω)
  5. #define L 0.001 // インダクタンス (H)
  6. #define E 5 // 電源電圧 (V)
  7. #define MAX_TIME 0.1 // 最大シミュレーション時間 (秒)
  8. #define NUM_POINTS 10 // 出力するデータ点数
  9.  
  10. int main() {
  11. double current = 0.0; // 電流
  12. double time = 0.0; // 時間
  13. double tau = L / R; // 時定数 (秒)
  14. double dt = MAX_TIME / NUM_POINTS; // 10等分した時間刻み
  15. double voltage = E; // 電圧
  16. int i; // ループカウンタを事前に宣言(C89規格に対応)
  17.  
  18. // ヘッダを表示
  19. printf("Time (s), Current (A)\n");
  20.  
  21. // 指定した回数だけ電流を計算して表示
  22. for (i = 0; i <= NUM_POINTS; i++) {
  23. // 電流の変化(I(t) = V/R * (1 - exp(-t/τ)))
  24. current = (voltage / R) * (1 - exp(-time / tau));
  25.  
  26. // 結果を表示
  27. printf("%lf, %lf\n", time, current);
  28.  
  29. // 時間を進める
  30. time += dt;
  31. }
  32.  
  33. printf("計算が終了しました。\n");
  34.  
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
Time (s), Current (A)
0.000000, 0.000000
0.010000, 0.001667
0.020000, 0.001667
0.030000, 0.001667
0.040000, 0.001667
0.050000, 0.001667
0.060000, 0.001667
0.070000, 0.001667
0.080000, 0.001667
0.090000, 0.001667
0.100000, 0.001667
計算が終了しました。