キルヒホッフの法則

連立方程式をSageで解く

$ R_1, R_2 $を時計回りに流れる電流 $I_1$と$R_3, R_4, R2$を時計周りに流れる電流$I_2$とすると、

  • $R_2$ を通過する電流 $I_{R2}$は、$I_1 - I_2$であるからキルヒホッフの電圧法則から最初の式が導かれる
  • $ R_1, R_2, R_3$の交点の電圧$ V_2 $が等しいことから2番目の式が導かれれる
$$ \left\{ \begin{eqnarray} (R_1 + R_2) I_1 - R_2 I_2& = & V_1 \\ -R_2 I_1 + (R_2 + R_3 + R_4) I_2 & = & 0 \end{eqnarray} \right. $$

これをSageで表すと以下のようになります。

In [1]:
I1, I2, V1, R1, R2, R3, R4 = var('I1 I2 V1 R1 R2 R3 R4')
eq = [
    (R1 + R2)*I1 - R2*I2 == V1,
    -R2*I1 + (R2 +  R3 + R4)*I2 == 0
]

show(eq)
In [2]:
# solveの結果は配列でかえされるので、最初の解のみを使用する
sol = solve(eq, [I1, I2])[0]
show(sol)
In [3]:
values = {V1:1, R1: 100, R2:220, R3:330, R4:330}
#  I1の式(sol[0])にvaluesを代入し、I1の値(右辺rhs)の値を数値で表示する
print sol[0].substitute(values).rhs().n()
# 同様にI2の値を求める
print sol[1].substitute(values).rhs().n()
0.00377358490566038
0.000943396226415094

$V_2, V_3$の値は以下のように求まります。

In [4]:
# I1 は、1番目の解の右辺なので、sol[0].rhs()となります
V2 = V1 - sol[0].rhs()*R1
print V2.substitute(values).n()
# 同様に
V3 = V1 - sol[0].rhs()*R1 - sol[1].rhs()*R3
print V3.substitute(values).n()
0.622641509433962
0.311320754716981

テブナンの定理

上記の解をテブナンの定理を使って解いたのが、トラ技の図4です。

点線で分割した左側にテブナンの定理を使って、$R_1, R_2$で分圧された電圧が$V'_1$となり、$R_1, R_2$の並列抵抗$R'$で表されます。

In [5]:
# 並列抵抗を計算する
def R_parallel(*Rs):
    R = sum([ 1/r for r in Rs])
    return 1/R
    

並列抵抗を$R_a$、分圧された電圧を$V_{1a}$とすると、以下のように求まります。

In [6]:
V1a = V1*R2/(R1+R2)
Ra = R_parallel(R1, R2)
print V1a
print Ra
R2*V1/(R1 + R2)
1/(1/R1 + 1/R2)
In [7]:
V2 = V1a*(R3+R4)/(Ra + R3 + R4)
print V2
V2.substitute(values).n()
R2*(R3 + R4)*V1/((R1 + R2)*(R3 + R4 + 1/(1/R1 + 1/R2)))
Out[7]:
0.622641509433962
In [ ]: