電磁誘導とファラデーの法則 — 変化する磁場が生む起電力

スマートフォンのワイヤレス充電器を置くと、ケーブルを繋いでいないのにバッテリーが充電されます。発電所のタービンが回ると、何百キロメートルも離れた家庭に電気が届きます。これらの現象はすべて、電磁誘導(electromagnetic induction) という共通の原理に基づいています。「磁場が変化すると電気が生まれる」 — この驚くべき発見は、1831年にマイケル・ファラデーによってなされました。

電磁誘導を理解すると、以下のような幅広い技術と物理現象のつながりが見えてきます。

  • 発電機とモーター: 回転運動と電気エネルギーの相互変換の原理
  • 変圧器(トランス): 送電線の高圧化・家庭用の降圧の仕組み
  • ワイヤレス給電・誘導加熱(IHクッキングヒーター): 非接触でエネルギーを伝える技術
  • 電磁波の発生: マクスウェル方程式への橋渡しとなる基本法則

本記事の内容

  • ファラデーの実験と電磁誘導の発見
  • ファラデーの法則の数学的定式化(積分形と微分形)
  • レンツの法則 — 誘導電流の向きの決定原理
  • 運動起電力 — 導体棒が磁場中を運動する場合
  • 自己インダクタンスと相互インダクタンス
  • 応用: 変圧器と発電機の原理
  • Pythonによる誘導起電力のシミュレーションと変圧器の等価回路解析

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

ファラデーの実験 — 磁場の変化が電気を生む

歴史的背景

1820年、エルステッドが「電流は磁針を動かす」ことを発見しました。電気が磁気を生むのなら、逆に磁気から電気を生み出すことはできないのか — この問いに取り組んだのがファラデーです。

ファラデーは鉄の環(トロイド)に2つのコイルを巻き、一方のコイル(一次側)に電池を接続しました。もう一方のコイル(二次側)には検流計を繋ぎ、電流が流れるかどうかを観察しました。一次側に定常電流を流し続けても二次側には何も起きません。しかし、一次側のスイッチを入れた瞬間と切った瞬間に、検流計の針が振れたのです。

この観察から、ファラデーは決定的な洞察を得ました。静的な磁場では何も起きないが、磁場が変化するときに電気が誘導される、と。

磁束の概念

ファラデーの発見を定量化するには、磁束(magnetic flux) $\Phi_B$ という概念が必要です。磁束とは、「ある面を貫く磁力線の総量」を数値化したものです。

水の流れに例えると、わかりやすくなります。川に網を沈めると、網を通過する水の量は「流速 $\times$ 網の面積 $\times$ 流れと網の角度」で決まります。同じように、磁束は「磁場の強さ $\times$ 面積 $\times$ 磁場と面の角度」で決まります。

数学的には、面 $S$ を貫く磁束は

$$ \Phi_B = \int_S \bm{B} \cdot d\bm{A} $$

と定義されます。ここで $\bm{B}$ は磁束密度ベクトル、$d\bm{A}$ は面素ベクトル(面の法線方向に面積要素の大きさを持つベクトル)です。一様な磁場 $\bm{B}$ が面積 $A$ の平面を角度 $\theta$($\bm{B}$ と面の法線のなす角)で貫く場合は

$$ \Phi_B = BA\cos\theta $$

と簡潔に書けます。磁束の単位はウェーバ(Wb)で、$1\,\text{Wb} = 1\,\text{T} \cdot \text{m}^2$ です。

ファラデーが発見したのは、この磁束の時間変化が起電力を生み出すということでした。次のセクションでは、この発見を数式として厳密に定式化します。

ファラデーの法則 — 磁束変化と起電力の関係

直感的な理解

コイルを貫く磁力線の本数が増えると、コイルには「磁力線の増加に逆らう」向きに電流が流れようとします。逆に磁力線が減ると、「減少を補う」向きに電流が流れます。ファラデーの法則はこの現象を正確に定量化したものです。磁束の変化速度が大きいほど、誘導される起電力も大きくなります。

積分形

$N$ 巻きのコイルに誘導される起電力(electromotive force, EMF)$\mathcal{E}$ は

$$ \mathcal{E} = -N\frac{d\Phi_B}{dt} $$

で与えられます。これが ファラデーの電磁誘導の法則 です。

この式の各要素を確認しましょう。$\mathcal{E}$ は起電力で、単位はボルト(V)です。起電力は「電荷を一周させる仕事」に対応し、電位差とは異なる概念ですが、回路に生じる電圧として振る舞います。$N$ はコイルの巻き数で、$N$ 巻きのコイルでは1巻きあたりの磁束変化が $N$ 倍に増幅されます。$d\Phi_B/dt$ は磁束の時間微分で、磁束の変化速度を表します。

負号の意味: 式の前についたマイナス符号が、後述するレンツの法則を数学的に表現しています。この符号は「誘導起電力は磁束変化を打ち消す向きに生じる」ことを意味します。

1巻きのコイル($N = 1$)の場合、ファラデーの法則は起電力を閉路 $C$ に沿った電場の線積分として書くこともできます。

$$ \mathcal{E} = \oint_C \bm{E} \cdot d\bm{l} = -\frac{d}{dt}\int_S \bm{B} \cdot d\bm{A} $$

左辺は電場 $\bm{E}$ の閉路積分(循環)です。静電場では $\oint \bm{E} \cdot d\bm{l} = 0$(保存力場)でしたが、変動磁場がある場合はこの積分がゼロでなくなります。つまり、電磁誘導は電場を非保存力場にするのです。これは静電気学から電磁気学への大きな飛躍です。

微分形(マクスウェル-ファラデーの方程式)

積分形にストークスの定理を適用すると、微分形が得られます。左辺にストークスの定理を適用すると

$$ \oint_C \bm{E} \cdot d\bm{l} = \int_S (\nabla \times \bm{E}) \cdot d\bm{A} $$

右辺の時間微分を積分の中に入れると(面 $S$ が時間に依存しない場合)

$$ -\frac{d}{dt}\int_S \bm{B} \cdot d\bm{A} = -\int_S \frac{\partial \bm{B}}{\partial t} \cdot d\bm{A} $$

両辺を比較すると、任意の面 $S$ についてこの等式が成り立つので、被積分関数どうしが等しくなければなりません。

$$ \nabla \times \bm{E} = -\frac{\partial \bm{B}}{\partial t} $$

これが ファラデーの法則の微分形(マクスウェル-ファラデーの方程式)です。この式は、磁場の時間変化が電場の回転(渦)を生み出すことを表しています。マクスウェル方程式4本のうちの1本であり、電磁波の存在を予言する鍵となる方程式です。

ファラデーの法則は「磁束が変化すると起電力が生じる」ことを教えてくれますが、その起電力(ひいては誘導電流)の向きはどう決まるのでしょうか。この問いに答えるのがレンツの法則です。

レンツの法則 — 誘導電流の向きを決める原理

直感的な理解

レンツの法則は、一言でいえば「自然は変化を嫌う」という原理です。日常の例で考えてみましょう。ドアを開けようとすると、ドアクローザーが閉じる方向に力を加えます。バネを伸ばすと、元に戻ろうとする力が生じます。電磁誘導でも同じで、磁束が変化すると、その変化を妨げる向きに誘導電流が流れます。

数学的表現

レンツの法則は、ファラデーの法則の負号に込められています。

$$ \mathcal{E} = -\frac{d\Phi_B}{dt} $$

この負号の意味を具体的に見てみましょう。

磁束が増加する場合($d\Phi_B/dt > 0$): 起電力は $\mathcal{E} < 0$、つまり磁束の増加を打ち消す方向です。誘導電流は、元の磁場と逆向きの磁場を作る方向に流れます。

磁束が減少する場合($d\Phi_B/dt < 0$): 起電力は $\mathcal{E} > 0$、つまり磁束の減少を補う方向です。誘導電流は、元の磁場と同じ向きの磁場を作る方向に流れます。

エネルギー保存則との関係

レンツの法則はエネルギー保存則の要請でもあります。もし誘導電流が磁束変化を助ける方向に流れたとすると、その電流がさらに磁束を増加させ、それがまた起電力を増加させ…という正のフィードバックが生じて、エネルギーが無限に生成されてしまいます。これは明らかにエネルギー保存則に反します。

したがって、誘導電流は必ず磁束変化に抵抗する方向に流れなければなりません。このことは、電磁誘導によるエネルギー変換では、外部からの仕事(例えば磁石を動かす機械的仕事)が電気エネルギーに変換されることを意味しています。

具体例: 磁石をコイルに近づける

$N$ 巻きのコイルに棒磁石のN極を近づける場合を考えます。磁石が近づくとコイルを貫く磁束は増加します。レンツの法則により、誘導電流は磁束の増加を妨げる向き、つまりコイルの磁石側がN極になる向きに流れます。右手の法則を使うと、磁石側から見て反時計回りの電流です。

逆に磁石を遠ざけると磁束が減少するので、誘導電流は磁束の減少を補う向き(コイルの磁石側がS極になる向き)に流れます。磁石側から見て時計回りです。

この「引き寄せると反発し、遠ざけると引きつける」という振る舞いは、磁石を動かすのに力(仕事)が必要であることを意味しており、この仕事が電気エネルギーの源です。

磁束の変化が起電力を生むメカニズムには、実は2つの異なるケースがあります。一つは「磁場自体が時間変化する場合」で、もう一つは「導体が磁場中を運動する場合」です。後者を「運動起電力」と呼び、次のセクションで詳しく見ていきます。

運動起電力 — 導体棒が磁場中を動くとき

直感的な理解

磁場の中で導体棒をスライドさせると、棒の中の自由電子はローレンツ力を受けて一方向に押しやられます。これによって棒の両端に電位差が生じます。電池がなくても、「運動」が「電圧」を生むのです。

導体棒の運動起電力の導出

一様な磁場 $\bm{B} = B\hat{\bm{z}}$(紙面に垂直、手前向き)の中に、2本の平行なレール(間隔 $l$)が $x$ 方向に敷かれており、その上を導体棒が速度 $\bm{v} = v\hat{\bm{x}}$ で滑る状況を考えます。

導体棒中の自由電子(電荷 $-e$)にはローレンツ力

$$ \bm{F} = q\bm{v} \times \bm{B} $$

が作用します。正電荷 $q = +e$ について考えると(電流の向きの慣習に合わせるため)

$$ \bm{F} = qv\hat{\bm{x}} \times B\hat{\bm{z}} = qvB(\hat{\bm{x}} \times \hat{\bm{z}}) = -qvB\hat{\bm{y}} $$

$\hat{\bm{x}} \times \hat{\bm{z}} = -\hat{\bm{y}}$ の関係を使いました。力は $-\hat{\bm{y}}$ 方向、つまり棒の下端から上端に向かう正電荷の移動が促されます。

この力が正電荷を棒の長さ $l$ にわたって運ぶ仕事が起電力に対応します。

$$ \mathcal{E} = \int_0^l \frac{\bm{F}}{q} \cdot d\bm{l} = \int_0^l (\bm{v} \times \bm{B}) \cdot d\bm{l} = vBl $$

ファラデーの法則との整合性

この結果がファラデーの法則と一致することを確認しましょう。レールと導体棒が囲む面積は、棒が速度 $v$ で移動するため

$$ A(t) = l \cdot x(t) = l(x_0 + vt) $$

磁束は

$$ \Phi_B = BA(t) = Bl(x_0 + vt) $$

ファラデーの法則を適用すると

$$ \mathcal{E} = -\frac{d\Phi_B}{dt} = -Bl\frac{dx}{dt} = -Blv $$

符号のマイナスはレンツの法則による向きの指定で、大きさは $|\mathcal{E}| = Blv$ となり、ローレンツ力から求めた結果と一致します。

一般的な運動起電力

より一般的には、閉回路 $C$ が磁場中を運動する場合の起電力は

$$ \mathcal{E} = \oint_C (\bm{v} \times \bm{B}) \cdot d\bm{l} $$

で与えられます。ここで $\bm{v}$ は回路の各点の速度です。磁場自体も時間変化する場合、ファラデーの法則の右辺は「磁場の時間変化による寄与」と「回路の運動による寄与」の両方を含みます。

$$ \mathcal{E} = -\frac{d\Phi_B}{dt} = -\int_S \frac{\partial \bm{B}}{\partial t} \cdot d\bm{A} + \oint_C (\bm{v} \times \bm{B}) \cdot d\bm{l} $$

第1項は 変圧器起電力(transformer EMF) と呼ばれ、磁場の時間変化に起因します。第2項は 運動起電力(motional EMF) で、導体の運動に起因します。静止した回路では第2項はゼロになり、静止した磁場では第1項がゼロになります。

運動起電力の概念は発電機の原理そのものです。しかし、電磁誘導の効果は外部から与えられる磁束変化だけではありません。回路自身が作る磁場による誘導効果もあります。これが「インダクタンス」の概念であり、次のセクションで詳しく見ていきます。

自己インダクタンスと相互インダクタンス

自己インダクタンスの直感

電流が流れるコイルは磁場を作り、その磁場はコイル自身を貫く磁束を生みます。電流が変化すると磁束も変化し、ファラデーの法則によりコイル自身に起電力が誘導されます。この「自分の電流変化に対する自分自身の抵抗」が自己インダクタンス(self-inductance) です。

水路に例えると、流れの変化に対する水の慣性に相当します。水路の太さ(コイルの巻き数や形状)が大きいほど、流れを変えるのに大きな力(電圧)が必要です。

自己インダクタンスの定義

コイルの電流 $I$ が作る磁束 $\Phi_B$ は電流に比例するため、$N$ 巻きコイルの磁束鎖交数 $\Lambda = N\Phi_B$ は

$$ \Lambda = LI $$

と書けます。比例定数 $L$ が自己インダクタンスです。単位はヘンリー(H)で、$1\,\text{H} = 1\,\text{Wb/A} = 1\,\text{V \cdot s/A}$ です。

ファラデーの法則に代入すると

$$ \mathcal{E} = -\frac{d\Lambda}{dt} = -L\frac{dI}{dt} $$

が得られます。この式は「電流の変化が速いほど大きな誘導起電力が生じる」ことを示しています。これが自己誘導(back-EMF)であり、インダクタ(コイル)の基本的な性質です。

ソレノイドのインダクタンスの導出

具体例として、長さ $\ell$、断面積 $A$、巻き数 $N$ のソレノイドのインダクタンスを計算します。

ソレノイドの内部磁場は(十分に長いソレノイドの近似で)

$$ B = \mu_0 n I = \mu_0 \frac{N}{\ell} I $$

ここで $n = N/\ell$ は単位長さあたりの巻き数です。1巻きあたりの磁束は

$$ \Phi_B = BA = \mu_0 \frac{N}{\ell} I A $$

磁束鎖交数は

$$ \Lambda = N\Phi_B = \mu_0 \frac{N^2}{\ell} I A $$

したがって、自己インダクタンスは

$$ L = \frac{\Lambda}{I} = \mu_0 \frac{N^2 A}{\ell} $$

この式から、インダクタンスを大きくするには「巻き数を増やす」「断面積を大きくする」「ソレノイドを短くする」「透磁率の高い芯材を使う($\mu_0 \to \mu$)」ことが有効だとわかります。

相互インダクタンス

2つのコイルが磁気的に結合している場合を考えます。コイル1に電流 $I_1$ が流れると磁場が生じ、その一部がコイル2を貫きます。このとき、コイル2の磁束鎖交数は

$$ \Lambda_{21} = M_{21} I_1 $$

比例定数 $M_{21}$ が 相互インダクタンス(mutual inductance) です。逆に、コイル2に電流 $I_2$ を流してコイル1の磁束鎖交数を見ると

$$ \Lambda_{12} = M_{12} I_2 $$

ノイマンの公式から、相互インダクタンスには重要な対称性

$$ M_{12} = M_{21} \equiv M $$

が成り立ちます。これは「コイル1からコイル2への磁気結合」と「コイル2からコイル1への磁気結合」が等しいという、直感的には自明でない結果です。

相互インダクタンスにより、コイル2に誘導される起電力は

$$ \mathcal{E}_2 = -M\frac{dI_1}{dt} $$

です。これが変圧器の動作原理です。

結合係数

2つのコイルの自己インダクタンスを $L_1$, $L_2$ とすると、相互インダクタンスは

$$ M = k\sqrt{L_1 L_2} $$

と表されます。$k$ は結合係数(coupling coefficient) で、$0 \leq k \leq 1$ の範囲を取ります。$k = 1$ は完全結合(一方のコイルが作る磁束がすべて他方を貫く)、$k = 0$ は無結合です。実際の変圧器では鉄芯を使って $k \approx 0.95 \sim 0.99$ を実現しています。

インダクタに蓄えられるエネルギー

電流 $I$ が流れるインダクタに蓄えられるエネルギーは、起電力に逆らって電流を流す仕事を積分することで求められます。電流を $0$ から $I$ まで増加させるとき

$$ W = \int_0^I Li’\, dI’ = \frac{1}{2}LI^2 $$

$i’ = LdI’/dt$ の関係と $P = \mathcal{E} \cdot I$ から導きました。このエネルギーは、インダクタの周囲に形成された磁場のエネルギーとして蓄えられています。

ソレノイドの場合、磁場のエネルギー密度は

$$ u_B = \frac{B^2}{2\mu_0} $$

であり、体積 $A\ell$ 内の全エネルギー $u_B \cdot A\ell = \frac{B^2 A\ell}{2\mu_0}$ は $\frac{1}{2}LI^2$ と一致します。

インダクタンスの概念を理解したところで、これらの理論が実際のデバイスでどのように活用されているかを見ていきましょう。変圧器と発電機は、電磁誘導の最も重要な応用です。

応用: 変圧器の原理

理想変圧器

変圧器(トランス)は、2つのコイル(巻線)を共通の磁気回路(鉄芯)で結合した素子です。一次巻線(primary, 巻き数 $N_1$)に交流電圧を加えると、磁芯中に時変磁束が生じ、二次巻線(secondary, 巻き数 $N_2$)に電圧が誘導されます。

理想変圧器(鉄芯の透磁率が無限大、損失がゼロ)では、一次側と二次側の磁束は完全に等しく $\Phi$ です。ファラデーの法則を各巻線に適用すると

$$ V_1 = N_1 \frac{d\Phi}{dt}, \quad V_2 = N_2 \frac{d\Phi}{dt} $$

$d\Phi/dt$ を消去すると

$$ \frac{V_2}{V_1} = \frac{N_2}{N_1} \equiv a $$

$a$ は巻数比(turns ratio) です。$a > 1$ で昇圧、$a < 1$ で降圧となります。

理想変圧器ではエネルギー損失がないため

$$ V_1 I_1 = V_2 I_2 $$

が成り立ちます。したがって電流比は電圧比の逆数

$$ \frac{I_2}{I_1} = \frac{N_1}{N_2} = \frac{1}{a} $$

です。電圧を $a$ 倍に上げると、電流は $1/a$ に下がります。送電では高圧(数十万ボルト)にすることで電流を小さくし、送電線の抵抗による $I^2 R$ 損失を低減しています。

インピーダンス変換

二次側に負荷 $Z_L$ が接続されている場合、一次側から見たインピーダンスは

$$ Z_{\text{in}} = \frac{V_1}{I_1} = \frac{V_2/a}{aI_2} = \frac{Z_L}{a^2} $$

変圧器はインピーダンスを $1/a^2$ 倍に変換します。これはオーディオアンプとスピーカーのインピーダンス整合や、高周波回路のマッチングネットワークで利用されます。

実際の変圧器の等価回路

実際の変圧器では以下の非理想的な要素があります。

巻線抵抗 $R_1$, $R_2$: 一次・二次巻線の銅損。 漏れインダクタンス $L_{l1}$, $L_{l2}$: 鉄芯を通らずに空間に漏れる磁束。結合係数 $k < 1$ に対応。 励磁インダクタンス $L_m$: 鉄芯の磁化に必要な電流(励磁電流)に対応。 鉄損等価抵抗 $R_c$: ヒステリシス損と渦電流損。

これらを含む等価回路は、T型等価回路として表されます。一次側に $R_1$ と $L_{l1}$ を直列に、並列分岐に $R_c$ と $L_m$ を並列に、二次側に $L_{l2}’$ と $R_2’$ を直列に(二次側パラメータは一次側に換算して $R_2′ = R_2/a^2$, $L_{l2}’ = L_{l2}/a^2$)配置します。

ファラデーの法則とインダクタンスから変圧器の動作が理解できました。次に、もう一つの重要な応用である発電機について見ていきましょう。

応用: 発電機の原理

回転コイルによる交流発電

一様な磁場 $\bm{B}$ の中で面積 $A$ の $N$ 巻きコイルを角速度 $\omega$ で回転させると、コイルを貫く磁束は

$$ \Phi_B(t) = BA\cos(\omega t) $$

です。コイル面の法線と磁場のなす角が $\theta = \omega t$ で変化するためです。

ファラデーの法則を適用すると

$$ \mathcal{E}(t) = -N\frac{d\Phi_B}{dt} = NBA\omega\sin(\omega t) $$

起電力の最大値(振幅)は

$$ \mathcal{E}_0 = NBA\omega $$

です。起電力は正弦波の交流であり、これがAC(交流)発電機の基本原理です。コイルの回転速度 $\omega$ が周波数を決定し、磁場の強さ $B$、コイルの面積 $A$、巻き数 $N$ が振幅を決定します。

日本の商用電源の周波数は50 Hz(東日本)または60 Hz(西日本)ですが、これは発電機のタービン(蒸気タービン、水車、風車など)の回転速度と極数で制御されています。

直流発電機

交流発電機の出力を整流子(コミュテーター)で切り替えると、常に同じ方向の電流が得られます。これが直流発電機です。整流子は、コイルが半回転するごとに外部回路との接続を切り替え、出力電圧が常に正(または常に負)になるようにします。ただし、単一コイルの直流発電機の出力は脈動($|\sin(\omega t)|$)しますので、実用的には複数のコイルを位相をずらして配置し、出力の脈動を低減します。

理論と応用の解説が一通り完了しました。ここからはPythonを使って、電磁誘導の物理を数値的にシミュレーションし、可視化していきましょう。

Pythonでの実装 — 誘導起電力のシミュレーション

時変磁場中のコイルの誘導起電力

まず、正弦波的に変動する磁場中に置かれたコイルに誘導される起電力を計算し、磁束と起電力の時間波形を可視化します。

import numpy as np
import matplotlib.pyplot as plt

# パラメータ設定
N = 100          # コイルの巻き数
A = 0.01         # コイルの面積 [m^2](10cm × 10cm)
B0 = 0.5         # 磁束密度の振幅 [T]
f = 50           # 周波数 [Hz]
omega = 2 * np.pi * f  # 角周波数 [rad/s]

# 時間軸(3周期分)
t = np.linspace(0, 3 / f, 1000)

# 磁束密度の時間変化: B(t) = B0 * sin(omega * t)
B = B0 * np.sin(omega * t)

# コイルを貫く磁束: Phi = B(t) * A
Phi = N * B * A  # 磁束鎖交数 Lambda = N * Phi_B

# 誘導起電力: E = -dLambda/dt = -N * A * dB/dt
# dB/dt = B0 * omega * cos(omega * t)
emf = -N * A * B0 * omega * np.cos(omega * t)

# 可視化
fig, axes = plt.subplots(3, 1, figsize=(10, 9), sharex=True)

# 磁束密度の時間変化
axes[0].plot(t * 1000, B, 'b-', linewidth=2)
axes[0].set_ylabel('$B(t)$ [T]', fontsize=12)
axes[0].set_title('Time-varying Magnetic Field and Induced EMF', fontsize=14)
axes[0].grid(True, alpha=0.3)
axes[0].axhline(y=0, color='k', linewidth=0.5)

# 磁束鎖交数
axes[1].plot(t * 1000, Phi, 'g-', linewidth=2)
axes[1].set_ylabel('$\\Lambda = N\\Phi_B$ [Wb]', fontsize=12)
axes[1].grid(True, alpha=0.3)
axes[1].axhline(y=0, color='k', linewidth=0.5)

# 誘導起電力
axes[2].plot(t * 1000, emf, 'r-', linewidth=2)
axes[2].set_xlabel('Time [ms]', fontsize=12)
axes[2].set_ylabel('$\\mathcal{E}$ [V]', fontsize=12)
axes[2].grid(True, alpha=0.3)
axes[2].axhline(y=0, color='k', linewidth=0.5)

# 最大値を表示
emf_max = N * A * B0 * omega
axes[2].axhline(y=emf_max, color='r', linestyle='--', alpha=0.5)
axes[2].axhline(y=-emf_max, color='r', linestyle='--', alpha=0.5)
axes[2].text(t[-1]*1000*0.75, emf_max*1.1, f'$\\mathcal{{E}}_0 = {emf_max:.1f}$ V',
             fontsize=11, color='r')

plt.tight_layout()
plt.savefig('faraday_law_emf.png', dpi=150, bbox_inches='tight')
plt.show()

3つのパネルは上から順に、磁束密度 $B(t)$、磁束鎖交数 $\Lambda(t)$、誘導起電力 $\mathcal{E}(t)$ の時間波形を示しています。磁束密度が正弦波 $\sin(\omega t)$ で変化するとき、起電力は余弦波 $-\cos(\omega t)$ となり、位相が $\pi/2$ ずれていることが確認できます。これはファラデーの法則 $\mathcal{E} = -d\Lambda/dt$ の微分操作の結果です。磁束の変化が最も急な点(ゼロクロス)で起電力が最大になり、磁束が最大・最小の点(変化がゼロ)で起電力がゼロになります。起電力の最大値は $\mathcal{E}_0 = NBA\omega \approx 157$ V であり、100巻きのコイル(断面積 $100\,\text{cm}^2$)が 50 Hz, 0.5 T の磁場中でかなりの電圧を生むことがわかります。

回転コイル発電機のシミュレーション

回転するコイルが生成する交流起電力と、それに接続された抵抗負荷の電流を可視化します。

import numpy as np
import matplotlib.pyplot as plt

# パラメータ設定
N = 200          # 巻き数
A = 0.02         # コイル面積 [m^2]
B0 = 0.8         # 磁束密度 [T]
f = 60           # 回転周波数 [Hz]
omega = 2 * np.pi * f
R_load = 50      # 負荷抵抗 [Ohm]

# 時間軸
t = np.linspace(0, 3 / f, 1000)

# コイルの回転角
theta = omega * t

# 磁束
Phi = N * B0 * A * np.cos(theta)

# 起電力
emf = N * B0 * A * omega * np.sin(theta)
emf_max = N * B0 * A * omega

# 負荷電流
I_load = emf / R_load

# 瞬時電力
P_inst = emf * I_load
P_avg = 0.5 * emf_max**2 / R_load

# 可視化
fig, axes = plt.subplots(2, 2, figsize=(14, 9))

# 左上: コイル角度と磁束の関係
ax = axes[0, 0]
theta_deg = np.degrees(theta)
ax.plot(theta_deg, Phi, 'b-', linewidth=2)
ax.set_xlabel('Coil angle $\\theta$ [deg]', fontsize=11)
ax.set_ylabel('Flux linkage $\\Lambda$ [Wb]', fontsize=11)
ax.set_title('Flux Linkage vs Coil Angle', fontsize=12)
ax.grid(True, alpha=0.3)

# 右上: 起電力の時間波形
ax = axes[0, 1]
ax.plot(t * 1000, emf, 'r-', linewidth=2)
ax.set_xlabel('Time [ms]', fontsize=11)
ax.set_ylabel('EMF [V]', fontsize=11)
ax.set_title(f'AC Generator EMF ($\\mathcal{{E}}_0 = {emf_max:.1f}$ V)', fontsize=12)
ax.grid(True, alpha=0.3)

# 左下: 電流波形
ax = axes[1, 0]
ax.plot(t * 1000, I_load, 'g-', linewidth=2)
ax.set_xlabel('Time [ms]', fontsize=11)
ax.set_ylabel('Load current [A]', fontsize=11)
ax.set_title(f'Load Current ($R = {R_load}\\,\\Omega$)', fontsize=12)
ax.grid(True, alpha=0.3)

# 右下: 瞬時電力と平均電力
ax = axes[1, 1]
ax.plot(t * 1000, P_inst, 'm-', linewidth=2, label='Instantaneous power')
ax.axhline(y=P_avg, color='k', linestyle='--', linewidth=1.5,
           label=f'Average power = {P_avg:.1f} W')
ax.set_xlabel('Time [ms]', fontsize=11)
ax.set_ylabel('Power [W]', fontsize=11)
ax.set_title('Instantaneous and Average Power', fontsize=12)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)

plt.suptitle('AC Generator Simulation', fontsize=15, y=1.01)
plt.tight_layout()
plt.savefig('ac_generator.png', dpi=150, bbox_inches='tight')
plt.show()

print(f"起電力の最大値: {emf_max:.1f} V")
print(f"起電力の実効値: {emf_max/np.sqrt(2):.1f} V")
print(f"平均電力: {P_avg:.1f} W")

4つのパネルで回転コイル発電機の動作を示しています。左上のグラフでは、コイルの回転角 $\theta$ に対する磁束鎖交数が余弦関数であることが確認できます。右上のグラフでは、起電力が正弦波となり、最大値は $\mathcal{E}_0 = NBA\omega \approx 1206.4$ V です。左下のグラフでは、50 $\Omega$ の抵抗負荷を通る電流がオームの法則に従って起電力に比例しています。右下のグラフでは、瞬時電力が $\sin^2(\omega t)$ に比例するため常に正(抵抗による消費)であり、平均電力はその半分です。実効値(RMS)電圧は最大値の $1/\sqrt{2}$ 倍であり、これが家庭用100 V の「100」にあたる値です。

運動起電力のシミュレーション — レール上の導体棒

磁場中をスライドする導体棒の起電力と、回路に流れる電流、そして導体棒に働く制動力を可視化します。

import numpy as np
import matplotlib.pyplot as plt

# パラメータ設定
B = 1.0          # 磁束密度 [T]
l = 0.5          # レール間隔 [m]
R = 2.0          # 回路全体の抵抗 [Ohm]
m = 0.1          # 導体棒の質量 [kg]
v0 = 10.0        # 初速度 [m/s]

# 運動方程式を解く
# F_brake = -BIl = -B(Blv/R)l = -(B^2 l^2 / R) v
# m dv/dt = -(B^2 l^2 / R) v
# 解: v(t) = v0 * exp(-t/tau), tau = mR/(B^2 l^2)
tau = m * R / (B**2 * l**2)

t = np.linspace(0, 5 * tau, 1000)

# 速度
v = v0 * np.exp(-t / tau)

# 位置
x = v0 * tau * (1 - np.exp(-t / tau))

# 起電力
emf = B * l * v

# 電流
I = emf / R

# 制動力
F_brake = -B * I * l

# 瞬時電力(抵抗での消費)
P = I**2 * R

# 運動エネルギー
KE = 0.5 * m * v**2

# 散逸エネルギー(累積)
dt = t[1] - t[0]
E_dissipated = np.cumsum(P) * dt

# 可視化
fig, axes = plt.subplots(2, 3, figsize=(16, 9))

# 速度
ax = axes[0, 0]
ax.plot(t / tau, v, 'b-', linewidth=2)
ax.set_xlabel('$t / \\tau$', fontsize=11)
ax.set_ylabel('Velocity [m/s]', fontsize=11)
ax.set_title(f'Velocity ($\\tau = {tau*1000:.1f}$ ms)', fontsize=12)
ax.grid(True, alpha=0.3)

# 位置
ax = axes[0, 1]
ax.plot(t / tau, x, 'g-', linewidth=2)
ax.axhline(y=v0*tau, color='k', linestyle='--', alpha=0.5)
ax.set_xlabel('$t / \\tau$', fontsize=11)
ax.set_ylabel('Position [m]', fontsize=11)
ax.set_title('Position of Conducting Bar', fontsize=12)
ax.grid(True, alpha=0.3)

# 起電力
ax = axes[0, 2]
ax.plot(t / tau, emf, 'r-', linewidth=2)
ax.set_xlabel('$t / \\tau$', fontsize=11)
ax.set_ylabel('EMF [V]', fontsize=11)
ax.set_title('Motional EMF', fontsize=12)
ax.grid(True, alpha=0.3)

# 電流
ax = axes[1, 0]
ax.plot(t / tau, I, 'm-', linewidth=2)
ax.set_xlabel('$t / \\tau$', fontsize=11)
ax.set_ylabel('Current [A]', fontsize=11)
ax.set_title('Induced Current', fontsize=12)
ax.grid(True, alpha=0.3)

# 制動力
ax = axes[1, 1]
ax.plot(t / tau, F_brake, 'c-', linewidth=2)
ax.set_xlabel('$t / \\tau$', fontsize=11)
ax.set_ylabel('Braking force [N]', fontsize=11)
ax.set_title('Electromagnetic Braking Force', fontsize=12)
ax.grid(True, alpha=0.3)

# エネルギー保存
ax = axes[1, 2]
ax.plot(t / tau, KE, 'b-', linewidth=2, label='Kinetic energy')
ax.plot(t / tau, E_dissipated, 'r-', linewidth=2, label='Dissipated energy')
ax.plot(t / tau, KE + E_dissipated, 'k--', linewidth=1.5, label='Total energy')
ax.axhline(y=0.5*m*v0**2, color='gray', linestyle=':', alpha=0.5)
ax.set_xlabel('$t / \\tau$', fontsize=11)
ax.set_ylabel('Energy [J]', fontsize=11)
ax.set_title('Energy Conservation', fontsize=12)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)

plt.suptitle('Motional EMF: Conducting Bar on Rails', fontsize=15, y=1.01)
plt.tight_layout()
plt.savefig('motional_emf.png', dpi=150, bbox_inches='tight')
plt.show()

print(f"時定数 tau = {tau*1000:.2f} ms")
print(f"初期運動エネルギー: {0.5*m*v0**2:.2f} J")
print(f"最終散逸エネルギー: {E_dissipated[-1]:.2f} J")

6つのパネルで、磁場中を滑る導体棒の完全な力学を示しています。速度は指数関数的に減衰し、時定数 $\tau = mR/(B^2l^2)$ で特徴づけられます。これは「電磁ブレーキ」として知られる現象で、新幹線やジェットコースターの制動に利用されています。位置は $v_0\tau$ に漸近し、導体棒は有限の距離で事実上停止します。起電力と電流も指数的に減衰します。右下のエネルギー保存のグラフが特に重要です。運動エネルギー(青)が減少するにつれて、抵抗で散逸するエネルギー(赤)が増加し、両者の和(黒破線)は初期運動エネルギー $\frac{1}{2}mv_0^2 = 5.0$ J に一致します。レンツの法則に従い、誘導電流による制動力が機械的エネルギーを電気エネルギー(ジュール熱)に変換していることが確認できます。

変圧器の等価回路解析

変圧器の等価回路をPythonで解析し、負荷変動に対する電圧降下特性を調べます。

import numpy as np
import matplotlib.pyplot as plt

# 変圧器パラメータ(一次側に換算済み)
R1 = 0.5         # 一次巻線抵抗 [Ohm]
X1 = 2.0         # 一次漏れリアクタンス [Ohm]
Rc = 5000        # 鉄損等価抵抗 [Ohm]
Xm = 2000        # 励磁リアクタンス [Ohm]
R2_ref = 0.6     # 二次巻線抵抗(一次側換算)[Ohm]
X2_ref = 2.5     # 二次漏れリアクタンス(一次側換算)[Ohm]
a = 10           # 巻数比 N1/N2
V1 = 2200        # 一次電圧 [V](実効値)

# 周波数
f = 50  # [Hz]

# 負荷のスイープ(力率 cos(phi) = 0.8 遅れ)
S_load = np.linspace(0.1, 50, 200)  # 皮相電力 [kVA]
pf = 0.8  # 力率(遅れ)
phi = np.arccos(pf)

# 各負荷での二次電圧を計算
V2_no_load = V1 / a  # 無負荷時の二次電圧
V2_list = []
efficiency_list = []

for S in S_load:
    # 二次電流(一次側換算)
    I2_ref = S * 1000 / V1  # 近似: V2 ≈ V1/a, I2_ref ≈ S/(V1)

    # 電圧降下(近似式)
    # Delta_V ≈ I2_ref * (Req*cos(phi) + Xeq*sin(phi))
    Req = R1 + R2_ref
    Xeq = X1 + X2_ref

    delta_V = I2_ref * (Req * pf + Xeq * np.sin(phi))

    V2_actual = (V1 - delta_V) / a
    V2_list.append(V2_actual)

    # 効率計算
    P_out = S * 1000 * pf  # 出力有効電力 [W]
    P_cu = I2_ref**2 * Req  # 銅損 [W]
    P_fe = V1**2 / Rc       # 鉄損 [W]
    eff = P_out / (P_out + P_cu + P_fe) * 100
    efficiency_list.append(eff)

V2_array = np.array(V2_list)
eff_array = np.array(efficiency_list)

# 電圧変動率
regulation = (V2_no_load - V2_array) / V2_no_load * 100

# 可視化
fig, axes = plt.subplots(1, 3, figsize=(16, 5))

# 二次電圧 vs 負荷
ax = axes[0]
ax.plot(S_load, V2_array, 'b-', linewidth=2)
ax.axhline(y=V2_no_load, color='k', linestyle='--', alpha=0.5,
           label=f'No-load: {V2_no_load:.0f} V')
ax.set_xlabel('Load [kVA]', fontsize=11)
ax.set_ylabel('Secondary voltage $V_2$ [V]', fontsize=11)
ax.set_title('Voltage Regulation', fontsize=12)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)

# 電圧変動率
ax = axes[1]
ax.plot(S_load, regulation, 'r-', linewidth=2)
ax.set_xlabel('Load [kVA]', fontsize=11)
ax.set_ylabel('Voltage regulation [%]', fontsize=11)
ax.set_title('Voltage Regulation [%]', fontsize=12)
ax.grid(True, alpha=0.3)

# 効率
ax = axes[2]
ax.plot(S_load, eff_array, 'g-', linewidth=2)
ax.set_xlabel('Load [kVA]', fontsize=11)
ax.set_ylabel('Efficiency [%]', fontsize=11)
ax.set_title('Transformer Efficiency', fontsize=12)
ax.grid(True, alpha=0.3)
ax.set_ylim(0, 100)

plt.suptitle(f'Transformer Analysis ($a = {a}$, $V_1 = {V1}$ V, pf = {pf})',
             fontsize=14, y=1.02)
plt.tight_layout()
plt.savefig('transformer_analysis.png', dpi=150, bbox_inches='tight')
plt.show()

print(f"無負荷二次電圧: {V2_no_load:.0f} V")
print(f"定格負荷 (50kVA) 時の二次電圧: {V2_array[-1]:.1f} V")
print(f"最大効率: {eff_array.max():.1f} %")

3つのパネルで変圧器の負荷特性を示しています。左図では、負荷が増加すると二次電圧が無負荷時の 220 V から低下していく様子が見えます。これは巻線抵抗と漏れリアクタンスによる電圧降下です。中図の電圧変動率は、負荷に対してほぼ線形に増加しています。定格負荷付近では約数パーセントの電圧降下があり、実用的な変圧器の設計で電圧変動率を小さくすることが重要であることがわかります。右図の効率は、軽負荷では鉄損(負荷に依存しない固定損失)の影響が大きく効率が低く、負荷が増えると効率が向上して最大値に達し、さらに重負荷では銅損(電流の2乗に比例)が支配的になって再び低下します。効率が最大になる点は「銅損 = 鉄損」の条件を満たす負荷であり、これは変圧器の設計時に最も頻繁に使用される負荷に合わせて最適化されます。

相互インダクタンスの可視化

2つの同軸ソレノイドの相互インダクタンスと結合係数を、二次コイルの位置の関数として可視化します。

import numpy as np
import matplotlib.pyplot as plt

# パラメータ設定
mu0 = 4 * np.pi * 1e-7  # 真空透磁率
N1 = 500         # 一次コイル巻き数
N2 = 300         # 二次コイル巻き数
r = 0.03         # コイル半径 [m](共通)
l1 = 0.2         # 一次コイル長さ [m]
l2 = 0.1         # 二次コイル長さ [m]
A = np.pi * r**2  # 断面積

# 自己インダクタンス
L1 = mu0 * N1**2 * A / l1
L2 = mu0 * N2**2 * A / l2

# 二次コイルの重なり割合(0: 完全に外、1: 完全に内部)
overlap_ratio = np.linspace(0, 1, 200)

# 相互インダクタンスの近似(重なり部分に比例)
# 完全重なり時の M
M_max = mu0 * N1 * N2 * A / l1
M = M_max * overlap_ratio

# 結合係数
k = M / np.sqrt(L1 * L2)

# 二次コイルに誘導される起電力(一次電流の変化率 dI1/dt = 1 A/s で正規化)
emf_2 = M * 1.0  # V(dI1/dt = 1 A/s のとき)

# 可視化
fig, axes = plt.subplots(1, 3, figsize=(16, 5))

# 相互インダクタンス
ax = axes[0]
ax.plot(overlap_ratio * 100, M * 1000, 'b-', linewidth=2)
ax.set_xlabel('Overlap ratio [%]', fontsize=11)
ax.set_ylabel('Mutual inductance $M$ [mH]', fontsize=11)
ax.set_title('Mutual Inductance vs Overlap', fontsize=12)
ax.grid(True, alpha=0.3)

# 結合係数
ax = axes[1]
ax.plot(overlap_ratio * 100, k, 'r-', linewidth=2)
ax.set_xlabel('Overlap ratio [%]', fontsize=11)
ax.set_ylabel('Coupling coefficient $k$', fontsize=11)
ax.set_title('Coupling Coefficient', fontsize=12)
ax.set_ylim(0, 1.05)
ax.grid(True, alpha=0.3)

# 誘導起電力
ax = axes[2]
ax.plot(overlap_ratio * 100, emf_2 * 1000, 'g-', linewidth=2)
ax.set_xlabel('Overlap ratio [%]', fontsize=11)
ax.set_ylabel('Induced EMF [mV] (per A/s)', fontsize=11)
ax.set_title('Induced EMF in Secondary Coil', fontsize=12)
ax.grid(True, alpha=0.3)

plt.suptitle(f'Coupled Solenoids ($N_1={N1}$, $N_2={N2}$, $r={r*100:.0f}$ cm)',
             fontsize=14, y=1.02)
plt.tight_layout()
plt.savefig('mutual_inductance.png', dpi=150, bbox_inches='tight')
plt.show()

print(f"L1 = {L1*1000:.3f} mH")
print(f"L2 = {L2*1000:.3f} mH")
print(f"M_max = {M_max*1000:.3f} mH")
print(f"k_max = {M_max/np.sqrt(L1*L2):.4f}")

3つのパネルで、同軸ソレノイドの結合特性を示しています。左図の相互インダクタンスは、二次コイルの重なり割合に対して線形に増加します。これは、一次コイルの磁場が内部でほぼ一様であるため、二次コイルを貫く磁束が重なり部分の長さに比例することと整合しています。中図の結合係数は重なり率100%でも $k < 1$ であり、これは一次コイルの磁場の一部が二次コイルの外部に漏れるためです。実際の変圧器では鉄芯で磁路を閉じることにより $k$ を1に近づけます。右図の誘導起電力は相互インダクタンスに比例するため、結合を強くするには二次コイルを一次コイルの内部に完全に挿入し、できるだけ密に巻くことが有効です。

まとめ

本記事では、電磁誘導の基礎からその応用まで体系的に解説しました。

  • ファラデーの法則: $\mathcal{E} = -N\frac{d\Phi_B}{dt}$ — 磁束の時間変化が起電力を生む。微分形では $\nabla \times \bm{E} = -\frac{\partial \bm{B}}{\partial t}$ となり、マクスウェル方程式の一つ
  • レンツの法則: 誘導起電力は磁束変化を妨げる向きに生じる。エネルギー保存則の要請
  • 運動起電力: 導体が磁場中を運動すると $\mathcal{E} = Blv$ が生じる。ローレンツ力とファラデーの法則の両面から理解できる
  • 自己インダクタンス: $\mathcal{E} = -L\frac{dI}{dt}$ — 電流変化に対する「電磁的慣性」。ソレノイドでは $L = \mu_0 N^2 A/\ell$
  • 相互インダクタンス: $M = k\sqrt{L_1 L_2}$ — 2つのコイル間の磁気結合の度合い。変圧器の動作原理
  • 変圧器: 巻数比 $a$ で電圧を変換。$V_2/V_1 = N_2/N_1$。送電の高圧化による損失低減の基盤
  • 発電機: 回転コイルで交流起電力 $\mathcal{E}(t) = NBA\omega\sin(\omega t)$ を生成

電磁誘導は、静電場の時代から動的な電磁場の物理学への入り口です。ファラデーの法則はマクスウェル方程式の一つであり、これに変位電流の概念を加えると、電磁波の存在が導かれます。

次のステップとして、以下の記事も参考にしてください。