fork download
  1. #include <stdio.h>
  2. #include <math.h> // 数学関数を使用するために必要
  3.  
  4. // 定数の設定
  5. #define E 5.0 // 電圧 (V)
  6. #define R 30.0 // 抵抗 (Ω)
  7. #define L 0.003 // インダクタンス (H)
  8. #define C 0.0000004 // キャパシタンス (F)
  9. #define DT 0.00002 // 時間増分 (s)
  10. #define T_MAX 0.002 // シミュレーション時間 (s)
  11.  
  12. // 微分方程式の計算(電流の時間変化)
  13. double dI(double q, double i) {
  14. return (E - R * i - q / C) / L;
  15. }
  16.  
  17. int main() {
  18. double t = 0.0; // 時間 (s)
  19. double q = 0.0; // 電荷 (C)
  20. double i = 0.0; // 電流 (A)
  21.  
  22. // ヘッダの出力
  23. printf("時間(s)\t電流(A)\n");
  24.  
  25. // シミュレーションループ
  26. while (t <= T_MAX) {
  27. printf("%.6f\t%.6f\n", t, i);
  28.  
  29. // オイラー法による更新
  30. double di = dI(q, i);
  31. q += i * DT;
  32. i += di * DT;
  33.  
  34. // 時間の更新
  35. t += DT;
  36. }
  37.  
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0s 5276KB
stdin
Standard input is empty
stdout
時間(s)	電流(A)
0.000000	0.000000
0.000020	0.033333
0.000040	0.060000
0.000060	0.070222
0.000080	0.058400
0.000100	0.025535
0.000120	-0.020224
0.000140	-0.065343
0.000160	-0.094696
0.000180	-0.096398
0.000200	-0.066194
0.000220	-0.009899
0.000240	0.057203
0.000260	0.114184
0.000280	0.140700
0.000300	0.123853
0.000320	0.063475
0.000340	-0.026112
0.000360	-0.118940
0.000380	-0.184498
0.000400	-0.197298
0.000420	-0.146038
0.000440	-0.039265
0.000460	0.094834
0.000480	0.215200
0.000500	0.279883
0.000520	0.259895
0.000540	0.150611
0.000560	-0.023448
0.000580	-0.212899
0.000600	-0.356644
0.000620	-0.400673
0.000640	-0.317015
0.000660	-0.116531
0.000680	0.149528
0.000700	0.401219
0.000720	0.552729
0.000740	0.540198
0.000760	0.345929
0.000780	0.010449
0.000800	-0.373245
0.000820	-0.683683
0.000840	-0.807619
0.000860	-0.678873
0.000880	-0.306670
0.000900	0.217384
0.000920	0.738850
0.000940	1.083561
0.000960	1.113047
0.000980	0.775449
0.001000	0.134355
0.001020	-0.637004
0.001040	-1.298876
0.001060	-1.616038
0.001080	-1.436810
0.001100	-0.754748
0.001120	0.269838
0.001140	1.341090
0.001160	2.108146
0.001180	2.274760
0.001200	1.705336
0.001220	0.491544
0.001240	-1.047935
0.001260	-2.443367
0.001280	-3.210400
0.001300	-3.009571
0.001320	-1.778774
0.001340	0.209053
0.001360	2.392240
0.001380	4.069105
0.001400	4.613184
0.001420	3.692078
0.001440	1.417466
0.001460	-1.632916
0.001480	-4.545711
0.001500	-6.331641
0.001520	-6.245149
0.001540	-4.065407
0.001560	-0.239898
0.001580	4.175645
0.001600	7.788046
0.001620	9.286084
0.001640	7.888500
0.001660	3.675071
0.001680	-2.325172
0.001700	-8.350390
0.001720	-12.395507
0.001740	-12.848138
0.001760	-9.078406
0.001780	-1.779909
0.001800	7.085025
0.001820	14.770275
0.001840	18.556800
0.001860	16.662595
0.001880	8.961631
0.001900	-2.753339
0.001920	-15.112524
0.001940	-24.082093
0.001960	-26.220240
0.001980	-19.903394