#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 time = 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));
        
        // 結果を表示
        printf("%e, %e\n", time, current);
        
        // 時間を進める
        time += dt;
    }

    printf("計算が終了しました。\n");

    return 0;
}
