09/01/17 03:17:08
>>116 以下はR=0.2Ωの場合。RESISTANCE_RがRなので、適当に変えてね。
#include<stdio.h>
#define INDUCTANCE_L 0.5 // インダクタンスL [H]
#define CAPACITANCE_C 0.5 // 容量C [F]
#define VOLTAGE_E 100 // 電圧E [V]
#define RESISTANCE_R 0.2 // 抵抗R [Ω]
#define TIME_STEP 0.001 // 時間刻み [s]
int main() {
double current_i; // 電流i [A]
double charge_c; // Cの電荷 [C]
double voltage_r; // Rの電圧 [V]
double voltage_l; // Lの電圧 [V]
double voltage_c; // Cの電圧 [V] (=v)
int i;
current_i = 0;
charge_c = 0;
for (i = 0; i <= 30000; i ++) {
voltage_c = charge_c / CAPACITANCE_C;
voltage_r = current_i * RESISTANCE_R;
voltage_l = VOLTAGE_E - voltage_r - voltage_c;
if (i % 100 == 0) {
printf("t=%3.3f[s], i=%3.2f[A], Q_C=%3.2f[C], V_R=%3.2f[V], V_L=%3.2f[V], V_C=%3.2f[V]\n",
i*TIME_STEP, current_i, charge_c, voltage_r, voltage_l, voltage_c);
}
charge_c += current_i * TIME_STEP;
current_i += voltage_l / INDUCTANCE_L * TIME_STEP;
}
return 0;
}