ラプラシアン(∇²)と調和関数

ラプラシアンはスカラー場に対する2階微分演算子であり、物理学のあらゆる場面で登場します。熱伝導、波動伝搬、静電場、重力場、量子力学など、偏微分方程式の中心的な演算子です。

ラプラシアンがゼロとなる関数(調和関数)は、平衡状態や定常状態を記述し、美しい数学的性質を持ちます。

本記事の内容

  • ラプラシアンの定義(div(grad))
  • ラプラス方程式とポアソン方程式
  • 調和関数の性質(平均値の性質、最大値原理)
  • Pythonでの可視化

前提知識

ラプラシアンの定義

スカラー場 $\phi$ のラプラシアンは、勾配の発散として定義されます。

$$ \boxed{\nabla^2 \phi = \Delta \phi = \nabla \cdot (\nabla \phi) = \frac{\partial^2 \phi}{\partial x^2} + \frac{\partial^2 \phi}{\partial y^2} + \frac{\partial^2 \phi}{\partial z^2}} $$

直感的には、ある点での $\phi$ の値が周囲の平均値と比べてどれだけ高い(低い)かを表します。$\nabla^2\phi > 0$ なら周囲より低い(凹み)、$\nabla^2\phi < 0$ なら周囲より高い(突起)です。

ラプラス方程式とポアソン方程式

$$ \nabla^2 \phi = 0 \quad \text{(ラプラス方程式)} $$

$$ \nabla^2 \phi = f(\bm{r}) \quad \text{(ポアソン方程式)} $$

物理での登場

分野 方程式 意味
静電場(真空中) $\nabla^2 V = -\rho/\varepsilon_0$ ポアソン方程式
静電場(電荷なし) $\nabla^2 V = 0$ ラプラス方程式
定常熱伝導 $\nabla^2 T = 0$ 熱源なしの温度分布
重力ポテンシャル $\nabla^2 \Phi = 4\pi G\rho$ ポアソン方程式
非圧縮流体 $\nabla^2 \psi = -\omega$ 流れ関数と渦度

調和関数の性質

$\nabla^2 \phi = 0$ を満たす関数を調和関数と呼びます。

平均値の性質

調和関数 $\phi$ は、任意の球(2次元では円)の中心での値が、球面上の値の平均に等しいです。

$$ \phi(\bm{r}_0) = \frac{1}{4\pi R^2}\oint_{S_R} \phi \, dA $$

最大値原理

調和関数は、領域の内部で最大値も最小値もとりません(境界でのみ極値をとる)。

具体例

例1: $\phi = x^2 – y^2$

$$ \nabla^2\phi = 2 + (-2) = 0 $$

調和関数です。

例2: $\phi = e^x\sin y$

$$ \nabla^2\phi = e^x\sin y + (-e^x\sin y) = 0 $$

調和関数です。

例3: $\phi = x^2 + y^2$

$$ \nabla^2\phi = 2 + 2 = 4 \neq 0 $$

調和関数ではありません。

Pythonでの実装

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-2, 2, 200)
y = np.linspace(-2, 2, 200)
X, Y = np.meshgrid(x, y)

fig, axes = plt.subplots(1, 3, figsize=(16, 5))

# 調和関数1: phi = x^2 - y^2 (鞍点)
phi1 = X**2 - Y**2
cs1 = axes[0].contourf(X, Y, phi1, levels=20, cmap='RdBu_r')
axes[0].contour(X, Y, phi1, levels=15, colors='k', linewidths=0.5)
plt.colorbar(cs1, ax=axes[0])
axes[0].set_title('調和関数 $\\phi = x^2 - y^2$\n$\\nabla^2\\phi=0$')
axes[0].set_aspect('equal')
axes[0].set_xlabel('x')
axes[0].set_ylabel('y')

# 調和関数2: phi = e^x sin(y)
phi2 = np.exp(X) * np.sin(Y)
cs2 = axes[1].contourf(X, Y, phi2, levels=20, cmap='RdBu_r')
axes[1].contour(X, Y, phi2, levels=15, colors='k', linewidths=0.5)
plt.colorbar(cs2, ax=axes[1])
axes[1].set_title('調和関数 $\\phi = e^x \\sin y$\n$\\nabla^2\\phi=0$')
axes[1].set_aspect('equal')
axes[1].set_xlabel('x')
axes[1].set_ylabel('y')

# 非調和関数: phi = x^2 + y^2
phi3 = X**2 + Y**2
cs3 = axes[2].contourf(X, Y, phi3, levels=20, cmap='viridis')
axes[2].contour(X, Y, phi3, levels=15, colors='k', linewidths=0.5)
plt.colorbar(cs3, ax=axes[2])
axes[2].set_title('非調和関数 $\\phi = x^2 + y^2$\n$\\nabla^2\\phi=4$')
axes[2].set_aspect('equal')
axes[2].set_xlabel('x')
axes[2].set_ylabel('y')

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

調和関数は内部に極値を持たない(鞍点はあるが)一方、非調和関数 $x^2+y^2$ は原点に最小値を持つことが確認できます。

まとめ

  • ラプラシアン $\nabla^2 = \partial^2/\partial x^2 + \partial^2/\partial y^2 + \partial^2/\partial z^2$
  • $\nabla^2\phi = 0$: ラプラス方程式、$\nabla^2\phi = f$: ポアソン方程式
  • 調和関数は平均値の性質最大値原理を持つ
  • 物理の至る所で登場(静電場、熱伝導、重力場)

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