はじめに
充電されたコンデンサを用いて別のコンデンサを充電させるとき、必ずジュール熱による損失が出てきてしまう。
この損失は、2つのコンデンサを接続するケーブルがどのようなものであろうと抵抗さえあれば必ず生じてしまう。
今回は、この損失についてPythonを用いてシミュレーションを行う。
具体的には、回路方程式である微分方程式から理論的に電荷保存則および時間の情報を消去したエネルギー保存の法則を導出する。
次に、プログラムを用いて、電流等のパラメータが時間によってどのように変化するのかを数値計算を行うことで解析する。
回路設定
以下のようなシンプルな回路を考える。
ただし、それぞれのコンデンサの電荷を$Q_1(t)=C_1V_1,Q_2(t)=C_2V_2$とする。
また、初期条件として、$Q_1(t=0)=Q,Q_2(t=0)=0$とする。
回路方程式
上記の回路について、キルヒホッフの第2法則を考える。つまり電圧の方程式である。
V_1=RI+V_2
一方で、電流と電荷については以下のような関係になる。
I=\frac{d Q_2}{dt}=-\frac{dQ_1}{dt}
したがって、以下のことが成立する。
\frac{1}{C_1}\frac{dQ_1}{dt}=R\frac{dI}{dt}+\frac{1}{C_2}\frac{dQ_2}{dt}
つまり、
(\frac{1}{C_1}+\frac{1}{C_2})I=-R\frac{dI}{dt}
\frac{dI}{dt}=-\frac{C_1+C_2}{C_1 C_2 R}I
I=Ae^{-\frac{C_1+C_2}{C_1 C_2 R}t}
ここで、初期条件を$V_1=V,V_2=0$とすると、任意定数$A$は以下のように表される。
A=\frac{V-0}{R}=\frac{V}{R}
I=\frac{V}{R}e^{-\frac{C_1+C_2}{C_1 C_2 R}t}
ただし、$C_1$の初期電荷$Q=CV$である。
電荷について
直接法
ここで、$C_2$に最終的に蓄えられる電荷を求めてみる。
Q_2(\infty)=\int_{0}^{\infty}Idt=\frac{V}{R}\int_{0}^{\infty} e^{-\frac{C_1+C_2}{C_1 C_2 R}t}dt=\frac{C_1C_2}{C_1+C_2}V=\frac{C_2}{C_1+C_2}Q
電荷保存則
次に、$C_2$の充電が完了したときにおける$C_1$に蓄えられている電荷$Q_1(\infty)$を求める。
そこで、以下の電流の式について考察する。
I=\frac{d Q_2}{dt}=-\frac{dQ_1}{dt}
この式を時間で積分する。
Q_1(t)+Q_2(t)=Q
という電荷保存の法則が導ける。
したがって、
Q_1(\infty)=\frac{C_1}{C_1+C_2}Q
ジュール熱損失について
ここで、ジュール熱は$I^2R$で表現される。
したがって、この回路において$C_2$のコンデンサが充電するまでの間に抵抗で
消費されるジュール熱損失は以下のようになる。
W_R=\int_{0}^{\infty}RI^2dt =\int_{0}^{\infty}R(\frac{V}{R}e^{-\frac{C_1+C_2}{C_1 C_2 R}t})^2dt=\frac{V^2}{R}[-\frac{C_1 C_2 R}{2(C_1+C_2)}e^{-\frac{C_1+C_2}{C_1 C_2 R}t}]_0^\infty=\frac{V^2 C_1 C_2}{2(C_1+C_2)}=\frac{Q^2 C_2}{2C_1(C_1+C_2)}
このジュール熱の損失をエネルギー保存則から求められるか調査する。
つまり、ジュール熱の損失を直接的に求めたが今度はエネルギー保存則を用いて間接的に求める。
この考え方は、高校や大学教養の電磁気学といった物理科目で極めて重要な考え方である。
エネルギー保存則
ところで、以下の回路方程式の両辺に$I$を掛けてみる。
\frac{Q_1}{C_1}=RI+\frac{Q_2}{C_2}
\frac{Q_1}{C_1}I=RI^2+\frac{Q_2}{C_2}I
-\frac{dQ_1}{dt}\frac{Q_1}{C_1}=RI^2+\frac{Q_2}{C_2}\frac{dQ_2}{dt}
両辺を$t=0$~$t=\infty$で積分すると、
-\int_{0}^{\infty}\frac{dQ_1}{dt}\frac{Q_1}{C_1}dt=\int_{0}^{\infty}RI^2 dt+\int_{0}^{\infty}\frac{Q_2}{C_2}\frac{dQ_2}{dt} dt
-\int_{Q}^{Q_1(\infty)}\frac{Q_1}{C_1}dQ_1=\int_{0}^{t}RI^2 dt+\int_{0}^{Q_2(\infty)}\frac{Q_2}{C_2}dQ_2
\frac{Q^2}{2C_1}-\frac{Q^2_1(\infty)}{2C_1}=\int_{0}^{\infty}RI^2 dt+\frac{Q^2_2(\infty)}{2C_2}
\frac{Q^2}{2C_1}=\int_{0}^{\infty}RI^2 dt+\frac{Q^2_1(\infty)}{2C_1}+\frac{Q^2_2(\infty)}{2C_2}
したがって、
\int_{0}^{\infty}RI^2 dt
=\frac{Q^2}{2C_1}-(\frac{Q^2_1(\infty)}{2C_1}+\frac{Q^2_2(\infty)}{2C_2})
ここで、
Q_1(\infty)=\frac{C_1}{C_1+C_2}Q,Q_2(\infty)=\frac{C_2}{C_1+C_2}Q
となることから、エネルギー保存の観点からも、
W_R=\int_{0}^{\infty}RI^2dt =\frac{Q^2 C_2}{2C_1(C_1+C_2)}
であることが分かる。
プログラム
さて、上記の考察を確認すべく、オイラー法を用いた数値計算をPythonで行う。
そこで、以下のようなプログラムを作成した。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
Q_1_ary=[]
Q_2_ary=[]
d_Q_1_ary=[]
d_Q_2_ary=[]
I_ary=[]
dI_ary=[]
V_1_ary=[]
V_2_ary=[]
t_ary=[]
W_C1_ary=[]
W_C2_ary=[]
W_R_ary=[]
W_total_ary=[]
W_R=0
C_1=1e-3
C_2=1e-3
R=10
dt=1e-5
t=0
t_lim=1
V_1=10
V_2=0
I=(V_1-V_2)/R
Q_1=V_1*C_1
Q_2=V_2*C_2
while t<t_lim:
dQ_2=I
dQ_1=-I
dI=(dQ_1/C_1-dQ_2/C_2)/R
I=I+dI*dt
Q_1=Q_1+dQ_1*dt
Q_2=Q_2+dQ_2*dt
V_1=Q_1/C_1
V_2=Q_2/C_2
W_C1=0.5*Q_1*V_1
W_C2=0.5*Q_2*V_2
W_R=W_R+(R*I**2)*dt
W_total=W_C1+W_C2+W_R
W_C1_ary.append(W_C1)
W_C2_ary.append(W_C2)
W_R_ary.append(W_R)
W_total_ary.append(W_total)
Q_1_ary.append(Q_1)
Q_2_ary.append(Q_2)
I_ary.append(I)
V_1_ary.append(V_1)
V_2_ary.append(V_2)
t_ary.append(t)
t=t+dt
plt.plot(t_ary,V_1_ary,label="V_1")
plt.plot(t_ary,V_2_ary,label="V_2")
plt.xlabel("時間[s]")
plt.ylabel("電圧[V]")
plt.legend()
plt.savefig("電圧の変化.png")
plt.show()
plt.plot(t_ary,I_ary,label="I")
plt.xlabel("時間[s]")
plt.ylabel("電流[A]")
plt.legend()
plt.savefig("電流の変化.png")
plt.show()
plt.plot(t_ary,Q_1_ary,label="Q_1")
plt.plot(t_ary,Q_2_ary,label="Q_2")
plt.xlabel("時間[s]")
plt.ylabel("電荷[C]")
plt.legend()
plt.savefig("電荷の変化.png")
plt.show()
plt.plot(Q_1_ary,Q_2_ary,label="Q_1 VS Q_2")
plt.xlabel("Q_1[C]")
plt.ylabel("Q_2[C]")
plt.legend()
plt.savefig("電荷保存則.png")
plt.show()
plt.plot(t_ary,W_C1_ary,label="W_C1")
plt.plot(t_ary,W_C2_ary,label="W_C2")
plt.plot(t_ary,W_R_ary,label="W_R")
plt.plot(t_ary,W_total_ary,label="Total")
plt.xlabel("時間[s]")
plt.ylabel("エネルギー[J]")
plt.legend()
plt.savefig("エネルギー変化.png")
plt.show()
これを実行すると以下のようなグラフが出力される。
結果
電流等のパラメータが時間経過とともにどのように変化するのかを調査した。
その結果は以下のグラフのようになった。
電流の変化
このように、回路に流れる電流は最初、極めて大きい。しかし、時間経過とともに指数関数的に減少していく。
これにより、$C_1$が放電し$C_2$に電気エネルギーを充電していることが分かる。
電圧の変化
一方で、電圧についてだが両者の電圧が同じになったタイミングで充電は完了する。
電荷の変化
このように、$C_1$から$C_2$に最初は大電流が流れるが、
徐々に低下して2つのコンデンサが同電位程度になったとき充電が完了する。
電荷保存則
$Q_1+Q_2=Q$が常に成立するため、以下のような線形的なグラフが出力される。
エネルギー保存則
最後にエネルギーであるが系全体のエネルギーは保存されるため、以下のようになる。
これは、$C_1$のコンデンサに蓄えられていたエネルギーの一部分がジュール熱と$C_2$に蓄えられたエネルギーへ変換されたことを示唆している。
まとめ
今回は、前半でコンデンサの過渡現象と電荷保存則およびエネルギー保存則について理論計算を行った。
後半では、Pythonを用いたシミュレーションを行うことで、前半の理論計算が正しいことを確認した。
この問題は、高校の物理だけでなく、大学教養レベルの電磁気学や電験の試験にも頻出な事項である。
ゆえに、様々な視点から俯瞰できる実力を身に着けたい。