ラプラシアンと調和関数 — ラプラス方程式の意味と性質

スカラー場に勾配を施すとベクトル場が得られ、さらに発散を施すとスカラー場に戻ります。この「勾配の発散」がラプラシアン $\nabla^2$ です。ラプラシアンが0になる関数を調和関数と呼び、これが満たす方程式 $\nabla^2 \phi = 0$ がラプラス方程式です。

ラプラス方程式は、定常状態の熱伝導、静電場、重力場、非圧縮流体のポテンシャルなど、物理学の至るところに登場する基本方程式です。

本記事の内容

  • ラプラシアン $\nabla^2$ の定義と物理的意味
  • ラプラス方程式 $\nabla^2 \phi = 0$
  • 調和関数の性質(平均値の定理、最大値原理)
  • Pythonでの2次元調和関数の可視化

前提知識

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

ラプラシアンの定義

スカラー場に対するラプラシアン

スカラー場 $\phi(x, y, z)$ に対するラプラシアン(Laplacian)$\nabla^2 \phi$(または $\Delta \phi$)は、勾配の発散として定義されます:

$$ \nabla^2 \phi = \nabla \cdot (\nabla \phi) $$

具体的に計算します。まず勾配は:

$$ \nabla \phi = \begin{pmatrix} \dfrac{\partial \phi}{\partial x}, & \dfrac{\partial \phi}{\partial y}, & \dfrac{\partial \phi}{\partial z} \end{pmatrix} $$

この発散をとると:

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

ラプラシアンは二階偏微分の和です。入力はスカラー場、出力もスカラー場です。

2次元の場合

2次元 $(x, y)$ では:

$$ \nabla^2 \phi = \frac{\partial^2 \phi}{\partial x^2} + \frac{\partial^2 \phi}{\partial y^2} $$

極座標での表現

2次元極座標 $(r, \theta)$ では:

$$ \nabla^2 \phi = \frac{1}{r}\frac{\partial}{\partial r}\left(r \frac{\partial \phi}{\partial r}\right) + \frac{1}{r^2}\frac{\partial^2 \phi}{\partial \theta^2} $$

$$ = \frac{\partial^2 \phi}{\partial r^2} + \frac{1}{r}\frac{\partial \phi}{\partial r} + \frac{1}{r^2}\frac{\partial^2 \phi}{\partial \theta^2} $$

ラプラシアンの物理的意味

ラプラシアン $\nabla^2 \phi$ は、点 $\bm{r}$ での $\phi$ の値と、その点の周囲の平均値との差を表します。

大雑把に言うと:

  • $\nabla^2 \phi > 0$: 周囲の平均よりも $\phi$ が小さい(凹んでいる)
  • $\nabla^2 \phi < 0$: 周囲の平均よりも $\phi$ が大きい(盛り上がっている)
  • $\nabla^2 \phi = 0$: $\phi$ の値は周囲の平均に等しい

これは1次元での二階微分 $f”(x)$ が関数の凹凸を表すことの自然な拡張です。

具体例

$\phi(x, y) = x^2 + y^2$ のとき:

$$ \nabla^2 \phi = \frac{\partial^2}{\partial x^2}(x^2 + y^2) + \frac{\partial^2}{\partial y^2}(x^2 + y^2) = 2 + 2 = 4 $$

すべての点で $\nabla^2 \phi = 4 > 0$ です。この関数は原点が最小値で全体的に凹んだ形をしており、各点の値は周囲の平均よりも常に小さいことが分かります。

ラプラス方程式

定義

ラプラス方程式は以下の偏微分方程式です:

$$ \boxed{\nabla^2 \phi = 0} $$

すなわち:

$$ \frac{\partial^2 \phi}{\partial x^2} + \frac{\partial^2 \phi}{\partial y^2} + \frac{\partial^2 \phi}{\partial z^2} = 0 $$

物理的な場面

物理現象 方程式 条件
定常熱伝導 $\nabla^2 T = 0$ 熱源がない
静電場のポテンシャル $\nabla^2 V = 0$ 電荷がない領域
重力ポテンシャル $\nabla^2 \Phi = 0$ 質量がない領域
非圧縮流体の速度ポテンシャル $\nabla^2 \varphi = 0$ 渦なし・非圧縮

なお、ラプラス方程式の右辺が0でなくソース項がある場合:

$$ \nabla^2 \phi = f(\bm{r}) $$

ポアソン方程式と呼びます。たとえば静電場では $\nabla^2 V = -\rho/\varepsilon_0$ です。

調和関数

定義

ある領域 $D$ 内で $\nabla^2 \phi = 0$ を満たす関数 $\phi$ を調和関数(harmonic function)と呼びます。

調和関数の例

以下は2次元の調和関数の例です($\nabla^2 \phi = 0$ を満たすことを確認できます):

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

$$ \frac{\partial^2 \phi}{\partial x^2} = 2, \quad \frac{\partial^2 \phi}{\partial y^2} = -2 $$

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

例2: $\phi(x, y) = e^x \cos y$

$$ \frac{\partial^2 \phi}{\partial x^2} = e^x \cos y, \quad \frac{\partial^2 \phi}{\partial y^2} = -e^x \cos y $$

$$ \nabla^2 \phi = e^x \cos y – e^x \cos y = 0 \quad \checkmark $$

例3: $\phi(x, y) = \ln\sqrt{x^2 + y^2} = \frac{1}{2}\ln(x^2 + y^2)$(原点を除く)

$$ \frac{\partial \phi}{\partial x} = \frac{x}{x^2+y^2}, \quad \frac{\partial^2 \phi}{\partial x^2} = \frac{y^2-x^2}{(x^2+y^2)^2} $$

$$ \frac{\partial \phi}{\partial y} = \frac{y}{x^2+y^2}, \quad \frac{\partial^2 \phi}{\partial y^2} = \frac{x^2-y^2}{(x^2+y^2)^2} $$

$$ \nabla^2 \phi = \frac{y^2-x^2}{(x^2+y^2)^2} + \frac{x^2-y^2}{(x^2+y^2)^2} = 0 \quad \checkmark $$

平均値の定理

調和関数の最も重要な性質の一つが平均値の定理(mean value property)です。

定理

$\phi$ が領域 $D$ 内で調和関数であるとき、$D$ 内の任意の点 $P$ を中心とする半径 $r$ の円(2次元)または球(3次元)が $D$ に含まれるならば、$P$ での $\phi$ の値は円周(球面)上の $\phi$ の平均値に等しい。

2次元の場合、点 $P = (x_0, y_0)$ を中心とする半径 $r$ の円周上での平均:

$$ \boxed{\phi(x_0, y_0) = \frac{1}{2\pi} \int_0^{2\pi} \phi(x_0 + r\cos\theta, \, y_0 + r\sin\theta) \, d\theta} $$

3次元の場合、半径 $r$ の球面上での平均:

$$ \boxed{\phi(\bm{r}_0) = \frac{1}{4\pi r^2} \oint_{S_r} \phi \, dS} $$

直感的な理解

ラプラシアンが0ということは、各点の値が周囲の平均に等しいということです。平均値の定理はこの性質を正確に述べたものです。

調和関数には「突出した」ピークや「深い」谷が内部に存在できません。各点が常に周囲の平均値と一致するからです。

最大値原理

定理

$\phi$ が有界閉領域 $\overline{D}$ で連続、$D$ の内部で調和であるとき:

  • $\phi$ の最大値と最小値は境界 $\partial D$ 上でのみ達成される
  • 内部の点で最大値(または最小値)を達成するならば、$\phi$ は $D$ 内で定数

$$ \boxed{\min_{\partial D} \phi \leq \phi(\bm{r}) \leq \max_{\partial D} \phi \quad (\bm{r} \in D)} $$

物理的な意味

定常熱伝導(熱源なし)では、温度 $T$ はラプラス方程式 $\nabla^2 T = 0$ を満たします。最大値原理により:

  • 最高温度と最低温度は必ず境界(壁面)で発生する
  • 内部だけが異常に高温・低温になることはない

これは物理的にも直感的に納得できます。

一意性への応用

最大値原理から、ラプラス方程式のディリクレ境界値問題(境界上の値を指定する問題)の解は、存在すれば一意であることが示せます。

もし2つの解 $\phi_1$, $\phi_2$ があれば、差 $\psi = \phi_1 – \phi_2$ も調和関数で、境界上で $\psi = 0$ です。最大値原理より $\psi \leq 0$ かつ $\psi \geq 0$ なので $\psi = 0$、すなわち $\phi_1 = \phi_2$ です。

Pythonでの2次元調和関数の可視化

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 300)
y = np.linspace(-3, 3, 300)
X, Y = np.meshgrid(x, y)

fig, axes = plt.subplots(2, 2, figsize=(14, 12))

# --- (1) 調和関数: phi = x^2 - y^2 ---
phi1 = X**2 - Y**2
lap1 = np.zeros_like(phi1)  # ラプラシアン = 0

cs1 = axes[0, 0].contourf(X, Y, phi1, levels=30, cmap='RdBu_r')
axes[0, 0].contour(X, Y, phi1, levels=15, colors='k', linewidths=0.5, alpha=0.5)
plt.colorbar(cs1, ax=axes[0, 0])
axes[0, 0].set_xlabel('$x$')
axes[0, 0].set_ylabel('$y$')
axes[0, 0].set_title('Harmonic: $\\phi = x^2 - y^2$, $\\nabla^2\\phi = 0$')
axes[0, 0].set_aspect('equal')

# --- (2) 調和関数: phi = e^x cos(y) ---
phi2 = np.exp(X) * np.cos(Y)

cs2 = axes[0, 1].contourf(X, Y, phi2, levels=30, cmap='RdBu_r')
axes[0, 1].contour(X, Y, phi2, levels=15, colors='k', linewidths=0.5, alpha=0.5)
plt.colorbar(cs2, ax=axes[0, 1])
axes[0, 1].set_xlabel('$x$')
axes[0, 1].set_ylabel('$y$')
axes[0, 1].set_title('Harmonic: $\\phi = e^x \\cos y$, $\\nabla^2\\phi = 0$')
axes[0, 1].set_aspect('equal')

# --- (3) 非調和関数との比較: phi = x^2 + y^2 ---
phi3 = X**2 + Y**2

cs3 = axes[1, 0].contourf(X, Y, phi3, levels=30, cmap='viridis')
axes[1, 0].contour(X, Y, phi3, levels=15, colors='k', linewidths=0.5, alpha=0.5)
plt.colorbar(cs3, ax=axes[1, 0])
axes[1, 0].set_xlabel('$x$')
axes[1, 0].set_ylabel('$y$')
axes[1, 0].set_title('Non-harmonic: $\\phi = x^2 + y^2$, $\\nabla^2\\phi = 4$')
axes[1, 0].set_aspect('equal')

# --- (4) 平均値の定理の数値検証 ---
# phi = x^2 - y^2 に対して、中心 (1, 0.5) で半径を変えて平均値を計算
phi_func = lambda x, y: x**2 - y**2
x0, y0 = 1.0, 0.5
phi_center = phi_func(x0, y0)

radii = np.linspace(0.1, 2.0, 50)
averages = []
for r in radii:
    theta = np.linspace(0, 2*np.pi, 1000)
    x_circle = x0 + r * np.cos(theta)
    y_circle = y0 + r * np.sin(theta)
    phi_on_circle = phi_func(x_circle, y_circle)
    averages.append(np.mean(phi_on_circle))

axes[1, 1].plot(radii, averages, 'b-', lw=2, label='Circle average')
axes[1, 1].axhline(phi_center, color='r', ls='--', lw=2,
                    label=f'$\\phi(x_0,y_0) = {phi_center:.4f}$')
axes[1, 1].set_xlabel('Radius $r$')
axes[1, 1].set_ylabel('Average of $\\phi$ on circle')
axes[1, 1].set_title('Mean value property verification ($\\phi = x^2 - y^2$)')
axes[1, 1].legend()
axes[1, 1].grid(True, alpha=0.3)

# 非調和関数での比較
phi_non_func = lambda x, y: x**2 + y**2
phi_non_center = phi_non_func(x0, y0)
averages_non = []
for r in radii:
    theta = np.linspace(0, 2*np.pi, 1000)
    x_circle = x0 + r * np.cos(theta)
    y_circle = y0 + r * np.sin(theta)
    phi_on_circle = phi_non_func(x_circle, y_circle)
    averages_non.append(np.mean(phi_on_circle))

axes[1, 1].plot(radii, averages_non, 'g--', lw=2, label='Non-harmonic avg')
axes[1, 1].axhline(phi_non_center, color='orange', ls=':', lw=2,
                    label=f'$\\phi_{{nh}}(x_0,y_0) = {phi_non_center:.4f}$')
axes[1, 1].legend(fontsize=9)

plt.tight_layout()
plt.show()

可視化から、以下のことが確認できます:

  • 調和関数 $x^2 – y^2$ は鞍点構造を持ち、内部に最大値・最小値を持たない
  • 調和関数 $e^x \cos y$ も同様に、等高線が内部で閉じることがない
  • 非調和関数 $x^2 + y^2$ は原点に明確な最小値を持つ
  • 調和関数では円周上の平均値が中心の値に一致する(平均値の定理)のに対し、非調和関数では一致しない

まとめ

本記事では、ラプラシアンの定義と調和関数の性質を解説しました。

  • ラプラシアン: $\nabla^2 \phi = \dfrac{\partial^2 \phi}{\partial x^2} + \dfrac{\partial^2 \phi}{\partial y^2} + \dfrac{\partial^2 \phi}{\partial z^2}$(勾配の発散)
  • ラプラス方程式: $\nabla^2 \phi = 0$、定常状態の熱伝導や静電場を記述
  • 調和関数: ラプラス方程式の解
  • 平均値の定理: 調和関数の値は周囲の平均に等しい
  • 最大値原理: 調和関数の最大・最小値は境界上でのみ達成される

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