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 TIME_STEP 0.000001 // 時間ステップ (秒) 小さくして精度を上げる
  8. #define MAX_TIME 0.00001 // 最大シミュレーション時間 (秒)
  9.  
  10. int main() {
  11. double current = 0.0; // 電流
  12. double time = 0.0; // 時間
  13. double tau = L / R; // 時定数 (τ = L/R)
  14. double dt = TIME_STEP; // 時間刻み
  15. double voltage = E; // 電圧
  16.  
  17. // ヘッダを表示
  18. printf("Time (s), Current (A)\n");
  19.  
  20. // 時間ごとに電流を計算
  21. while (time <= MAX_TIME) {
  22. // 電流の変化
  23. current = (voltage / R) * (1 - exp(-time / tau));
  24.  
  25. // 結果を表示
  26. printf("%e, %e\n", time, current);
  27.  
  28. // 時間を進める
  29. time += dt;
  30. }
  31.  
  32. printf("計算が終了しました。\n");
  33.  
  34. return 0;
  35. }
  36.  
Success #stdin #stdout 0.01s 5272KB
stdin
Standard input is empty
stdout
Time (s), Current (A)
0.000000e+00, 0.000000e+00
1.000000e-06, 1.583688e-03
2.000000e-06, 1.662535e-03
3.000000e-06, 1.666461e-03
4.000000e-06, 1.666656e-03
5.000000e-06, 1.666666e-03
6.000000e-06, 1.666667e-03
7.000000e-06, 1.666667e-03
8.000000e-06, 1.666667e-03
9.000000e-06, 1.666667e-03
1.000000e-05, 1.666667e-03
計算が終了しました。