- 124 名前:デフォルトの名無しさん mailto:sage [2009/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; }
|

|