薮哲郎
東京書籍 高校物理 探究12 の RLC 回路のシミュレータです。
L, C, 周波数などのパラメータを設定して実行すると、 共振周波数、各場所の電圧、電流、豆電球が消費する電力、 ベクトル図などを表示します。
以下の2つのバージョンがあります。
最初、fortran と自作のグラフライブラリを用いて開発しました。 fortran のプログラムは利用するための敷居が高いので、 JavaScript 版を作りました。本プログラムは GPL としますので、 ご自由に改造してお楽しみ下さい。
電気回路は複素記号法を使って解きます。 1. のシミュレータの場合、以下の手順で求めます。
インピーダンスは以下のとおりです。
L と R2 の直列インピーダンス: Z2 = R2 + jwL
C と R3 の直列インピーダンス: Z3 = R3 + 1/jwC
VM より下側の合成インピーダンス: Z23 = (Z2 * Z3)/(Z2 + Z3)
回路全体のインピーダンス: Z = R1 + Z23
回路全体の電流 I1 は「電圧÷インピーダンス」で以下のように 求まります。
I1 = E / Z
I2, I3 は分流の式を用いて次式で得られます。
I2 = I1 * Z3 / (Z2 + Z3)
I3 = I1 * Z2 / (Z2 + Z3)
電圧は電流とインピーダンスの積なので、次式で得られます。
V1 = I1 * R1
V2 = I2 * R2
VL = I2 * jwL
V3 = I3 * R3
VC = I3 * 1/jwC
複素数で得られた電圧・電流の絶対値を取れば、 電圧計や電流計の指示値が得られます。
電力は公式より以下の式で得られます。
P1 = Re{ V1 * (I1)^*} (注) (I1)^* は I1 の複素共役
P2 = Re{ V2 * (I2)^*}
P3 = Re{ V3 * (I3)^*}
fortran はデフォルトで複素数の演算をサポートしているので、 数式をそのまま書くことができますが、 JavaScript で複素数の計算をするのは非常に厄介です。 興味がある人は「ソースを表示」として中身を見て下さい。
Z3 = R3 + 1/jwc
を JavaScript では以下のように書く必要があります (複素数のライブラリとして complex.js を使っています)。
z_rc = c_r3.add(one.div(jj.mul(w*C)));
fortran なら次式で済みます。
z_rc = r3 + 1 / ( jj * w * C )
どちらが分かりやすいかは一目瞭然ですね。