#include <stdio.h>
#include <math.h>
#define R 3000 // 抵抗 (Ω)
#define L 0.001 // インダクタンス (H)
#define E 5 // 電源電圧 (V)
#define TIME_STEP 0.000001 // 時間ステップ (秒) 小さくして精度を上げる
#define MAX_TIME 0.00001 // 最大シミュレーション時間 (秒)
int main() {
double current = 0.0; // 電流
double tau = L / R; // 時定数 (τ = L/R)
double dt = TIME_STEP; // 時間刻み
double voltage = E; // 電圧
// ヘッダを表示
printf("Time (s), Current (A)\n");
// 時間ごとに電流を計算
while (time <= MAX_TIME
) { // 電流の変化
current
= (voltage
/ R
) * (1 - exp(-time / tau
));
// 結果を表示
// 時間を進める
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgojZGVmaW5lIFIgMzAwMCAgICAgICAvLyDmirXmipcgKM6pKQojZGVmaW5lIEwgMC4wMDEgICAgICAvLyDjgqTjg7Pjg4Djgq/jgr/jg7PjgrkgKEgpCiNkZWZpbmUgRSA1ICAgICAgICAgIC8vIOmbu+a6kOmbu+WcpyAoVikKI2RlZmluZSBUSU1FX1NURVAgMC4wMDAwMDEgLy8g5pmC6ZaT44K544OG44OD44OXICjnp5IpIOWwj+OBleOBj+OBl+OBpueyvuW6puOCkuS4iuOBkuOCiwojZGVmaW5lIE1BWF9USU1FIDAuMDAwMDEgICAvLyDmnIDlpKfjgrfjg5/jg6Xjg6zjg7zjgrfjg6fjg7PmmYLplpMgKOenkikKCmludCBtYWluKCkgewogICAgZG91YmxlIGN1cnJlbnQgPSAwLjA7ICAgIC8vIOmbu+a1gQogICAgZG91YmxlIHRpbWUgPSAwLjA7ICAgICAgIC8vIOaZgumWkwogICAgZG91YmxlIHRhdSA9IEwgLyBSOyAgICAgIC8vIOaZguWumuaVsCAoz4QgPSBML1IpCiAgICBkb3VibGUgZHQgPSBUSU1FX1NURVA7ICAgLy8g5pmC6ZaT5Yi744G/CiAgICBkb3VibGUgdm9sdGFnZSA9IEU7ICAgICAgLy8g6Zu75ZynCgogICAgLy8g44OY44OD44OA44KS6KGo56S6CiAgICBwcmludGYoIlRpbWUgKHMpLCBDdXJyZW50IChBKVxuIik7CgogICAgLy8g5pmC6ZaT44GU44Go44Gr6Zu75rWB44KS6KiI566XCiAgICB3aGlsZSAodGltZSA8PSBNQVhfVElNRSkgewogICAgICAgIC8vIOmbu+a1geOBruWkieWMlgogICAgICAgIGN1cnJlbnQgPSAodm9sdGFnZSAvIFIpICogKDEgLSBleHAoLXRpbWUgLyB0YXUpKTsKICAgICAgICAKICAgICAgICAvLyDntZDmnpzjgpLooajnpLoKICAgICAgICBwcmludGYoIiVlLCAlZVxuIiwgdGltZSwgY3VycmVudCk7CiAgICAgICAgCiAgICAgICAgLy8g5pmC6ZaT44KS6YCy44KB44KLCiAgICAgICAgdGltZSArPSBkdDsKICAgIH0KCiAgICBwcmludGYoIuioiOeul+OBjOe1guS6huOBl+OBvuOBl+OBn+OAglxuIik7CgogICAgcmV0dXJuIDA7Cn0K
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
計算が終了しました。