LaTeXでマクスウェル方程式を書く機会は、電磁気学のレポートや論文執筆で多くあります。今回はマクスウェル方程式をLaTeXで正しく美しく書く方法について解説します。
本記事の内容
- マクスウェル方程式の微分形のLaTeX記法
- マクスウェル方程式の積分形のLaTeX記法
- ベクトル解析記号の書き方
- 構成方程式と波動方程式のLaTeX記法
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
微分形のマクスウェル方程式
マクスウェル方程式の微分形は次の4つの式です。
$$ \begin{align} \nabla \cdot \bm{D} &= \rho \\ \nabla \cdot \bm{B} &= 0 \\ \nabla \times \bm{E} &= -\frac{\partial \bm{B}}{\partial t} \\ \nabla \times \bm{H} &= \bm{j} + \frac{\partial \bm{D}}{\partial t} \end{align} $$
各記号のLaTeXコマンド
| 数学記号 | LaTeXコマンド | 説明 |
|---|---|---|
| $\nabla$ | \nabla |
ナブラ演算子 |
| $\nabla \cdot$ | \nabla \cdot |
発散(div) |
| $\nabla \times$ | \nabla \times |
回転(rot, curl) |
| $\bm{E}$ | \bm{E} |
太字ベクトル |
| $\frac{\partial}{\partial t}$ | \frac{\partial}{\partial t} |
偏微分 |
| $\rho$ | \rho |
ギリシャ文字ロー |
| $\varepsilon$ | \varepsilon |
ギリシャ文字イプシロン |
| $\mu$ | \mu |
ギリシャ文字ミュー |
連立方程式として書く
マクスウェル方程式を波括弧で囲んだ連立方程式として記述する場合は、cases環境を使います。
$$ \begin{cases} \nabla \cdot \bm{D} = \rho \\ \nabla \cdot \bm{B} = 0 \\ \nabla \times \bm{E} = -\dfrac{\partial \bm{B}}{\partial t} \\ \nabla \times \bm{H} = \bm{j} + \dfrac{\partial \bm{D}}{\partial t} \end{cases} $$
LaTeXコードは以下の通りです。
\begin{cases}
\nabla \cdot \bm{D} = \rho \\
\nabla \cdot \bm{B} = 0 \\
\nabla \times \bm{E} = -\dfrac{\partial \bm{B}}{\partial t} \\
\nabla \times \bm{H} = \bm{j} + \dfrac{\partial \bm{D}}{\partial t}
\end{cases}
積分形のマクスウェル方程式
積分形は閉曲面積分や線積分を含むため、やや複雑になります。
$$ \begin{align} \oint_S \bm{D} \cdot d\bm{S} &= \int_V \rho \, dV \\ \oint_S \bm{B} \cdot d\bm{S} &= 0 \\ \oint_C \bm{E} \cdot d\bm{l} &= -\frac{d}{dt}\int_S \bm{B} \cdot d\bm{S} \\ \oint_C \bm{H} \cdot d\bm{l} &= \int_S \left(\bm{j} + \frac{\partial \bm{D}}{\partial t}\right) \cdot d\bm{S} \end{align} $$
積分記号のLaTeXコマンド
| 記号 | LaTeXコマンド | 説明 |
|---|---|---|
| $\int$ | \int |
積分 |
| $\oint$ | \oint |
閉曲線/閉曲面積分 |
| $\int_V$ | \int_V |
体積積分 |
| $\oint_S$ | \oint_S |
閉曲面積分 |
| $d\bm{S}$ | d\bm{S} |
面積素ベクトル |
| $d\bm{l}$ | d\bm{l} |
線素ベクトル |
構成方程式
媒質の特性を記述する構成方程式もよく使います。
$$ \bm{D} = \varepsilon_0 \bm{E} + \bm{P} = \varepsilon \bm{E} $$
$$ \bm{B} = \mu_0 (\bm{H} + \bm{M}) = \mu \bm{H} $$
$$ \bm{j} = \sigma \bm{E} $$
ここで $\varepsilon = \varepsilon_0 \varepsilon_r$、$\mu = \mu_0 \mu_r$ です。
波動方程式
マクスウェル方程式から導出される波動方程式は次のように書きます。
$$ \nabla^2 \bm{E} – \mu \varepsilon \frac{\partial^2 \bm{E}}{\partial t^2} = 0 $$
ラプラシアン $\nabla^2$ は \nabla^2 で記述します。
平面波の解
$$ \bm{E}(\bm{r}, t) = \bm{E}_0 e^{j(\omega t – \bm{k} \cdot \bm{r})} $$
ここで $\omega = 2\pi f$ は角周波数、$\bm{k}$ は波数ベクトルです。
Pythonでの数式レンダリング確認
import numpy as np
import matplotlib.pyplot as plt
# マクスウェル方程式を含む図の作成
fig, ax = plt.subplots(figsize=(10, 8))
ax.axis('off')
# マクスウェル方程式のテキスト表示
equations = [
r"Maxwell's Equations (Differential Form)",
"",
r"Gauss's Law: $\nabla \cdot \mathbf{D} = \rho$",
r"No Monopole: $\nabla \cdot \mathbf{B} = 0$",
r"Faraday: $\nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t}$",
r"Ampere-Maxwell: $\nabla \times \mathbf{H} = \mathbf{j} + \frac{\partial \mathbf{D}}{\partial t}$",
"",
r"Wave Equation: $\nabla^2 \mathbf{E} = \mu\varepsilon \frac{\partial^2 \mathbf{E}}{\partial t^2}$",
"",
r"Wave Speed: $v = \frac{1}{\sqrt{\mu\varepsilon}}$, in vacuum $c = \frac{1}{\sqrt{\mu_0 \varepsilon_0}}$",
]
for i, eq in enumerate(equations):
fontsize = 16 if i == 0 else 14
fontweight = 'bold' if i == 0 else 'normal'
ax.text(0.1, 0.95 - i * 0.09, eq, fontsize=fontsize,
fontweight=fontweight, transform=ax.transAxes,
verticalalignment='top')
plt.title("Maxwell's Equations Reference", fontsize=18, fontweight='bold')
plt.tight_layout()
plt.show()
# 電磁波の可視化
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# 平面波
z = np.linspace(0, 4 * np.pi, 500)
E = np.sin(z)
H = np.sin(z)
axes[0].plot(z, E, 'b-', linewidth=2, label=r'$E_x$')
axes[0].plot(z, H, 'r--', linewidth=2, label=r'$H_y$')
axes[0].set_xlabel('z [rad]')
axes[0].set_ylabel('Amplitude')
axes[0].set_title('Plane Wave: E and H fields')
axes[0].legend()
axes[0].grid(True)
# 電磁スペクトル
freqs = np.logspace(3, 21, 1000)
wavelengths = 3e8 / freqs
axes[1].loglog(freqs, wavelengths, 'k-', linewidth=2)
axes[1].set_xlabel('Frequency [Hz]')
axes[1].set_ylabel('Wavelength [m]')
axes[1].set_title('Electromagnetic Spectrum')
axes[1].grid(True)
# 帯域のアノテーション
bands = [
(1e6, 1e9, 'Radio', 'lightblue'),
(1e9, 1e12, 'Microwave', 'lightyellow'),
(4e14, 8e14, 'Visible', 'lightgreen'),
(1e15, 1e18, 'UV/X-ray', 'lightsalmon'),
]
for f_low, f_high, name, color in bands:
axes[1].axvspan(f_low, f_high, alpha=0.3, color=color, label=name)
axes[1].legend(fontsize=8)
plt.tight_layout()
plt.show()
まとめ
本記事では、LaTeXでマクスウェル方程式を書く方法を解説しました。
- 微分形は
\nabla \cdotと\nabla \timesを使って簡潔に記述できる - 積分形では
\ointや\int_Vなどの積分記号を使用する - ベクトルは
\bm{}で太字にする(\boldsymbol{}も可) - 連立方程式は
cases環境で波括弧付きの表記ができる - 偏微分は
\frac{\partial}{\partial t}で記述する
次のステップとして、以下の記事も参考にしてください。