Skip to content
cfd-lab:~/ja/posts/2026-07-21-water-wave-di…online
NOTE #110DAY TUE 유체역학DATE 2026.07.21READ 4 min readWORDS 1,952#Water-Waves#Dispersion#Group-Velocity#Capillary-Wave#유동현상

波ひとつは集団より速い — 波の分散と群速度

波長ごとに速度が変わる分散と、位相速度と群速度のずれ

静かな池に小石を一つ投げ込みます。波紋が輪を描いて広がります。ここまでは誰でも知っています。

ところが輪をよく見ると、おかしなことに気づきます。波紋の一つひとつは輪の後ろで生まれます。外へ走り出します。そして輪の先端で消えていきます。集団はゆっくり広がるのに、その中の波紋は集団を追い越して進みます。

この記事では二つのことを扱います。波長ごとに速度が変わる分散(dispersion、波長による速度差)。そして波ひとつと波の集団が別々の速度で動く**群速度(group velocity)**です。最後に、小石の輪がなぜそう見えるのかがわかります。

小石が作った輪

水面の波は、元の位置に戻ろうとする力、すなわち復元力(restoring force)で動きます。復元力は二つあります。

一つは重力です。盛り上がった波の峰を下へ引き戻します。もう一つは表面張力(surface tension、水面を張り詰めさせる力)です。曲がった水面を平らにしようとします。

波長が長いと重力が勝ちます。波長が 1.7cm より短くなると表面張力が主導します。海のうねりは重力波です。池のさざ波は表面張力波です。

波長が速度を決める

水面波を支配する関係は、分散関係式(dispersion relation)一つに要約されます。

ω2=(gk+σk3ρ)tanh(kh)\omega^2 = \left( g k + \frac{\sigma k^3}{\rho} \right)\tanh(k h)

ω\omega は角振動数、k=2π/λk = 2\pi/\lambda は波数(単位長さあたりの波の数)、λ\lambda は波長、gg は重力加速度、σ\sigma は表面張力、ρ\rho は密度、hh は水深です。

波ひとつが進む速度は位相速度(phase velocity)です。c=ω/kc = \omega/k で定義します。

c=(gk+σkρ)tanh(kh)c = \sqrt{\left( \frac{g}{k} + \frac{\sigma k}{\rho} \right)\tanh(k h)}

要点は、cckk に、つまり波長に依存することです。波長が違えば速度も違います。これが分散です。音や光(真空中)は波長が違っても速度は同じです。水面波はそうではありません。

重力と表面張力の綱引き

深い水を見ます。khkh が大きいと tanh(kh)1\tanh(kh) \to 1 です。式が簡単になります。

c=gk+σkρc = \sqrt{ \frac{g}{k} + \frac{\sigma k}{\rho} }

第一項は重力の分です。波長が長いほど(kk が小さいほど)大きくなります。第二項は表面張力の分です。波長が短いほど(kk が大きいほど)大きくなります。

二つの項が逆に動きます。だから速度には最小値があります。dc/dk=0dc/dk = 0 を解くと、最も遅い速度の波長が出ます。

λ=2πσρg1.7cm\lambda_\ast = 2\pi\sqrt{\frac{\sigma}{\rho g}} \approx 1.7\,\text{cm}

この波長で位相速度は約 0.23 m/s と最も遅くなります。下のグラフで実際に確かめてみましょう。

1mm1cm10cm1m10m0.01.02.03.03.9m/swavelength λ (log)gravity ↔ capillaryc_min ≈ 0.23 m/sphase speed cgroup speed c_g

Lower σ toward 0 and the capillary upturn on the left flattens — only gravity is left. Shrink h and the long-wave end levels off at the shallow-water speed √(gh), where waves stop dispersing.

表面張力 σ\sigma を 0 のほうへ下げると、左側の表面張力波の区間が消えます。重力だけになると波長が短いほど必ず遅くなります。曲線の最低点、そして重力と表面張力が分かれる境界がどう動くかを見てください。

深い水と浅い水

水深が波長よりずっと浅いとどうなるでしょうか。khkh が小さいと tanh(kh)kh\tanh(kh) \approx kh です。表面張力を無視すると速度が驚くほど単純になります。

c=ghc = \sqrt{g h}

波長が消えました。浅い水ではすべての波長が同じ速度で進みます。分散がありません。この状態を非分散(non-dispersive)と呼びます。

津波が怖い理由はここにあります。水深 4km の海で gh\sqrt{gh} は時速 700km に達します。波長が数百 km の長い波が、形をほぼ保ったままジェット機の速度で走ります。

集団は波より遅い

さて最初の謎に戻ります。なぜ波紋ひとつは集団を追い越すのでしょうか。

波の集団、すなわち波束(wave packet)が動く速度が群速度です。cg=dω/dkc_g = d\omega/dk で定義します。位相速度とは別の量です。

深い水の純粋な重力波を見ます。ω=gk\omega = \sqrt{gk} です。微分すると結果はきれいです。

cg=dωdk=12gk=c2c_g = \frac{d\omega}{dk} = \frac{1}{2}\sqrt{\frac{g}{k}} = \frac{c}{2}

群速度が位相速度のちょうど半分です。集団は自分の波の半分の速度で這います。だから波紋ひとつは集団の後ろで生まれ、前へ走り、集団の先端で消えます。

エネルギーは群速度で移動します。位相速度で進むのは峰の形だけです。下で黄色い峰を一つ追ってみましょう。

At c_g/c = 0.5 (deep-water gravity waves) the yellow crest clearly outruns the pink envelope and fades at the front. Set the ratio to 1 and the crest freezes inside the lump — nothing disperses.

c_g/c を 0.5 にすると、黄色い峰がピンクの包絡線(envelope、集団の外形)を追い越して前で薄れます。比を 1 に上げると峰は集団の中に固定されます。分散のない波の姿です。

Python で描く分散曲線#

分散関係式さえあれば、位相速度と群速度はすぐに描けます。群速度は ω(k)\omega(k) を数値微分して求めます。

import numpy as np
 
g, rho = 9.81, 1000.0          # 重力加速度[m/s^2]、水の密度[kg/m^3]
sigma = 0.072                  # 水-空気の表面張力[N/m]
 
def omega(k, h):
    return np.sqrt((g * k + sigma * k**3 / rho) * np.tanh(k * h))
 
def phase_speed(lam, h):
    k = 2.0 * np.pi / lam
    return omega(k, h) / k
 
def group_speed(lam, h):
    k = 2.0 * np.pi / lam
    dk = k * 1e-5                       # 中心差分で domega/dk
    return (omega(k + dk, h) - omega(k - dk, h)) / (2.0 * dk)
 
lam = np.geomspace(1e-3, 10.0, 400)    # 1mm ~ 10m、深水を仮定
c = phase_speed(lam, h=100.0)
i = int(np.argmin(c))
print(f"最小位相速度 {c[i]:.3f} m/s @ 波長 {lam[i]*100:.2f} cm")
# 最小位相速度 0.232 m/s @ 波長 1.73 cm
 
lam_swell = 2.0                        # 2m のうねり: 重力が支配
cp = phase_speed(lam_swell, 100.0)
cg = group_speed(lam_swell, 100.0)
print(f"位相 {cp:.3f} m/s, 群 {cg:.3f} m/s, 比 {cg/cp:.3f}")
# 位相 1.767 m/s, 群 0.884 m/s, 比 0.500

最小位相速度は手計算と一致します。波長 1.73cm で 0.232 m/s です。そして 2m のうねりの群速度は位相速度のちょうど 0.5 倍になります。先ほどの手による導出がコードで再現されました。

水切りをするとき思い出すこと

  • 分散: 水面波は波長ごとに速度が違います。長い波は重力で、短い波は表面張力で速くなり、その間に最小速度(約 0.23 m/s)が生まれます。
  • 浅い水: 水深が波長より浅いと速度は gh\sqrt{gh} だけ。波長が消えて分散がありません。
  • 群速度: エネルギーと集団は cgc_g で進みます。深水の重力波では cg=c/2c_g = c/2 なので、峰ひとつは集団の前で生まれ、そして消えます。

役に立ったらシェアしてください。