携帯電話の基地局とあなたのスマートフォンの間に、ちょうどビルや山が立ちはだかっているとしましょう。電波は光と同じ電磁波ですから、直線的に進むなら障害物の裏側は「電波の影」になって完全に圏外になるはずです。ところが実際には、ビルの陰でも完全に通信が途切れることは稀で、少し弱くはなるものの電波は届きます。これは、電波が障害物の縁(エッジ)で回折(diffraction)して裏側に回り込むためです。
この「障害物の裏にどれだけ電波が回り込むか」を定量的に予測するのが、本記事のテーマであるナイフエッジ回折損失(knife-edge diffraction loss)です。障害物の頂部を、刃物のように鋭い半無限の遮蔽板(ナイフエッジ)でモデル化すると、回折による減衰量がたった一つの無次元パラメータ — フレネルパラメータ $\nu$ — だけで決まる、という驚くほど簡潔な結果が得られます。
このモデルを理解すると、以下のような場面で電波伝搬を見通しよく扱えるようになります。
- 移動通信のエリア設計: 山やビルの陰になるエリアで受信電力がどこまで落ちるかを見積もり、基地局の配置や高さを最適化する
- マイクロ波回線・放送波の設計: 中継局間の見通し線上に地形の出っ張りがある場合の付加損失を計算し、アンテナ高やマージンを決める
- レーダー・センシング: 地形や建造物の陰に隠れた目標の検出可能性を評価する
本記事の内容
- 回折がなぜ起きるのか(ホイヘンスの原理)の直感的な理解
- フレネル・キルヒホッフ回折積分からのナイフエッジ回折界の導出(省略なし)
- フレネルパラメータ $\nu$ とフレネル積分 $C(\nu), S(\nu)$ による複素界の表現
- コルニュ螺旋(Cornu spiral)上での界の幾何学的な合成
- 回折損失 $-20\log_{10}|\cdots|$ の導出と、$\nu=0$ で約 6 dB になる理由
- Python によるフレネル積分の数値計算、コルニュ螺旋の描画、回折損失曲線の可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が格段に深まります。
特に、フレネルゾーンの概念(送受信点を結ぶ経路のまわりに広がる楕円体状の領域)は本記事の幾何学的設定の土台になります。
回折とは — 波が「影」に回り込む仕組み
幾何光学の世界では、光(電波)は直進し、障害物の裏側は完全な影になると考えます。しかし波動光学の立場では、波は障害物の縁で曲がり、影の領域にも回り込みます。プールの水面を伝わる波が防波堤の隙間を通り抜けた後、扇状に広がっていく様子を思い浮かべてください。あの「広がり」が回折です。電波も波である以上、まったく同じ振る舞いをします。
この回折を説明する基礎がホイヘンスの原理(Huygens’ principle)です。ホイヘンスは「波面上のすべての点は、新たな球面波(素元波)の波源になる」と考えました。次の瞬間の波面は、これらの無数の素元波が重ね合わさってできる包絡面である、というわけです。
障害物がない自由空間では、ある波面から出た無数の素元波は互いに干渉し合い、結果として元の進行方向にまっすぐ進む波だけが強め合って残ります。ところが、波面の一部が障害物で遮られると、遮られなかった部分から出た素元波だけが残ります。この「生き残った素元波たち」が重ね合わさると、障害物の幾何学的な影の領域にも波が入り込むのです。
つまり、ナイフエッジ回折の計算とは、本質的には「障害物に遮られずに受信点まで届いた素元波を、すべて足し合わせる」という作業です。素元波は位相を持つ複素数として表されるため、この足し算は複素数の積分になります。これを厳密に表現したものが、次節で扱うフレネル・キルヒホッフ回折積分です。
ここまでで、回折が「遮られなかった波面からの素元波の重ね合わせ」であることをイメージできました。次に、この重ね合わせを数式で表現するための舞台設定 — 幾何学的な配置とフレネルパラメータ — を整えましょう。
幾何学的設定とフレネルパラメータ
配置の定義
送信点 $T$ と受信点 $R$ を考え、その間にナイフエッジ(鋭い縁を持つ半無限の遮蔽板)があるとします。送信点からエッジまでの水平距離を $d_1$、エッジから受信点までの水平距離を $d_2$ とします。
ここで重要なのが、直線 $TR$(見通し線、line-of-sight)に対するエッジ頂部の高さ $h$ です。エッジ頂部が見通し線より上に出ていれば $h > 0$(見通しが遮られている=見通し外)、見通し線より下にあれば $h < 0$(見通しは確保されているが障害物が近い)と定義します。$h = 0$ はエッジ頂部がちょうど見通し線をかすめる「ぎりぎり」の状態です。
回折の強さは、この高さ $h$ そのものではなく、波長 $\lambda$ と距離 $d_1, d_2$ との兼ね合いで決まります。これらをまとめて一つの無次元量に集約したのがフレネルパラメータ(Fresnel-Kirchhoff diffraction parameter) $\nu$ です。
$$ \nu = h\sqrt{\frac{2}{\lambda}\left(\frac{1}{d_1} + \frac{1}{d_2}\right)} $$
$h$ と同じ符号を持つので、$\nu > 0$ が見通し外、$\nu < 0$ が見通し内に対応します。
なぜこの形になるのか
このパラメータの正体を理解するために、波が遮られた経路と遮られない直線経路の行路差を考えましょう。送信点からエッジ頂部を経由して受信点に至る折れ線経路の長さと、直線経路 $TR$ の長さの差を $\Delta$ とします。
エッジ頂部の高さ $h$ が距離 $d_1, d_2$ に比べて十分小さいとき、幾何学的な近似(二項展開)によって行路差は次のように書けます。
$$ \Delta = \sqrt{d_1^2 + h^2} + \sqrt{d_2^2 + h^2} – (d_1 + d_2) $$
各平方根を $h \ll d_1, d_2$ の条件で展開します。$\sqrt{d^2 + h^2} = d\sqrt{1 + (h/d)^2} \approx d\left(1 + \frac{h^2}{2d^2}\right) = d + \frac{h^2}{2d}$ を用いると、
$$ \Delta \approx \left(d_1 + \frac{h^2}{2d_1}\right) + \left(d_2 + \frac{h^2}{2d_2}\right) – (d_1 + d_2) = \frac{h^2}{2}\left(\frac{1}{d_1} + \frac{1}{d_2}\right) $$
この行路差 $\Delta$ に対応する位相差は、波数 $k = 2\pi/\lambda$ を掛けて、
$$ \Delta\phi = k\Delta = \frac{2\pi}{\lambda}\cdot\frac{h^2}{2}\left(\frac{1}{d_1} + \frac{1}{d_2}\right) = \frac{\pi h^2}{\lambda}\left(\frac{1}{d_1} + \frac{1}{d_2}\right) $$
ここでフレネルパラメータ $\nu$ の定義を見ると、$\nu^2 = h^2\cdot\frac{2}{\lambda}\left(\frac{1}{d_1}+\frac{1}{d_2}\right)$ ですから、上の位相差は
$$ \Delta\phi = \frac{\pi}{2}\nu^2 $$
と書けます。つまり $\nu$ は、回折経路と直線経路の位相差を $\frac{\pi}{2}\nu^2$ という形にまとめる、行路差の平方根に相当する量だったのです。後で見るように、この $\frac{\pi}{2}\nu^2$ という位相こそがフレネル積分の被積分関数に現れる位相そのものであり、$\nu$ が回折損失を支配する唯一のパラメータになる理由がここにあります。
ここまでで、回折の強さが $\nu$ という一つの無次元量に集約されることがわかりました。いよいよ、遮られなかった波面からの素元波を足し合わせる回折積分を立てて、回折界を $\nu$ の関数として導出していきましょう。
フレネル・キルヒホッフ回折積分からの導出
回折積分の出発点
ホイヘンスの原理を数式化すると、受信点での電界 $E$ は、エッジによって遮られていない開口面(aperture)上の各点から出た素元波の重ね合わせとして表されます。開口面を見通し線に垂直な平面とし、その面内の座標を考えます。エッジは水平方向に無限に長いと仮定できるので、問題は実質的に高さ方向(鉛直方向)の 1 次元積分に帰着します。
自由空間で障害物がないときの受信電界を $E_0$ とすると、ナイフエッジがある場合の受信電界 $E$ との比は、開口面上の高さ座標を $y$ として次の積分で与えられます。
$$ \frac{E}{E_0} = \frac{1 + j}{2}\int_{\nu}^{\infty} \exp\left(-j\frac{\pi}{2}t^2\right)\,dt $$
ここで積分変数 $t$ は、開口面上の高さ $y$ を $\nu$ と同じ規格化(フレネルスケーリング)で無次元化したものです。具体的には、$y$ における行路差の位相が $\frac{\pi}{2}t^2$ となるように $t = y\sqrt{\frac{2}{\lambda}\left(\frac{1}{d_1}+\frac{1}{d_2}\right)}$ と定義します。エッジ頂部の高さ $h$ が下限 $\nu$ に対応し、エッジから上の遮られていない領域($y > h$、すなわち $t > \nu$)を無限遠まで積分するわけです。
前に付いた係数 $\frac{1+j}{2}$ は、自由空間(エッジがない、すなわち $\nu = -\infty$ から積分)の場合に比 $E/E_0$ がちょうど 1 になるように決まる規格化定数です。実際、後で確認するように $\int_{-\infty}^{\infty}\exp(-j\frac{\pi}{2}t^2)\,dt = \frac{2}{1+j}$ が成り立つので、$\nu \to -\infty$ で $E/E_0 \to 1$ となります。
フレネル積分による表現
被積分関数のオイラー公式による分解を行います。$\exp\left(-j\frac{\pi}{2}t^2\right) = \cos\left(\frac{\pi}{2}t^2\right) – j\sin\left(\frac{\pi}{2}t^2\right)$ なので、積分は実部と虚部に分かれます。
$$ \int_{\nu}^{\infty}\exp\left(-j\frac{\pi}{2}t^2\right)\,dt = \int_{\nu}^{\infty}\cos\left(\frac{\pi}{2}t^2\right)\,dt – j\int_{\nu}^{\infty}\sin\left(\frac{\pi}{2}t^2\right)\,dt $$
ここでフレネル積分(Fresnel integrals)を導入します。フレネル積分は次のように原点からの積分として定義される特殊関数です。
$$ C(\nu) = \int_{0}^{\nu}\cos\left(\frac{\pi}{2}t^2\right)\,dt, \qquad S(\nu) = \int_{0}^{\nu}\sin\left(\frac{\pi}{2}t^2\right)\,dt $$
これらは初等関数では書けませんが、数値計算は容易で、多くの数値ライブラリ(後述の scipy.special.fresnel)に実装されています。$\nu \to \infty$ での極限値は
$$ C(\infty) = S(\infty) = \frac{1}{2} $$
であることが知られています(フレネル積分の重要な性質で、後でコルニュ螺旋の収束点として可視化します)。
これを使って、先ほどの $\nu$ から $\infty$ までの積分を書き換えます。$\int_{\nu}^{\infty} = \int_{0}^{\infty} – \int_{0}^{\nu}$ と分割すると、
$$ \int_{\nu}^{\infty}\cos\left(\frac{\pi}{2}t^2\right)\,dt = C(\infty) – C(\nu) = \frac{1}{2} – C(\nu) $$
虚部についても同様に、
$$ \int_{\nu}^{\infty}\sin\left(\frac{\pi}{2}t^2\right)\,dt = S(\infty) – S(\nu) = \frac{1}{2} – S(\nu) $$
これらをまとめると、回折積分は次のように整理できます。
$$ \int_{\nu}^{\infty}\exp\left(-j\frac{\pi}{2}t^2\right)\,dt = \left[\frac{1}{2} – C(\nu)\right] – j\left[\frac{1}{2} – S(\nu)\right] $$
回折界の最終形
これを最初の式に代入すると、ナイフエッジ回折による受信電界の自由空間比が、フレネル積分だけで表現できます。
$$ \frac{E}{E_0} = \frac{1 + j}{2}\left\{\left[\frac{1}{2} – C(\nu)\right] – j\left[\frac{1}{2} – S(\nu)\right]\right\} $$
この式が、ナイフエッジ回折の中心的な結果です。複素数の比 $E/E_0$ は、振幅(絶対値)と位相(偏角)の両方の情報を持っています。私たちが知りたい回折損失は、この比の絶対値を使って次のように定義されます。
$$ L_{\text{diff}}(\nu) = -20\log_{10}\left|\frac{E}{E_0}\right| \quad [\text{dB}] $$
これは「自由空間に比べて受信電力が何 dB 減ったか」を表す量です。$|E/E_0| = 1$ なら損失 0 dB(自由空間と同じ)、$|E/E_0| = 0.5$ なら $-20\log_{10}0.5 \approx 6$ dB の損失、というように対数で表現します。
ここまでで、回折界が $C(\nu)$ と $S(\nu)$ という 2 つの実数の組で完全に決まることが導けました。この 2 つを座標平面 $(C, S)$ にプロットすると、回折を視覚的に理解する強力な道具 — コルニュ螺旋 — が得られます。次節でその幾何学的な意味を見ていきましょう。
コルニュ螺旋による幾何学的理解
螺旋の描き方
横軸に $C(\nu)$、縦軸に $S(\nu)$ をとり、$\nu$ を $-\infty$ から $+\infty$ まで動かしたときに点 $(C(\nu), S(\nu))$ が描く曲線をコルニュ螺旋(Cornu spiral)、あるいはクロソイド曲線(clothoid)と呼びます。この曲線は、$\nu$ が大きくなるにつれて点 $(\tfrac12, \tfrac12)$ に渦を巻きながら収束し、$\nu$ が小さく(負に大きく)なるにつれて点 $(-\tfrac12, -\tfrac12)$ に収束する、二重の渦巻きです。
なぜ螺旋になるのでしょうか。フレネル積分の微小変化を考えると、$dC = \cos(\frac{\pi}{2}\nu^2)\,d\nu$、$dS = \sin(\frac{\pi}{2}\nu^2)\,d\nu$ ですから、曲線の接線方向の角度は $\frac{\pi}{2}\nu^2$ です。$\nu$ が増えると接線の向きが $\nu^2$ に比例してどんどん速く回転していくため、曲線は内側へ巻き込んでいく螺旋になるのです。曲線に沿った弧長 $ds = \sqrt{dC^2 + dS^2} = |d\nu|$ なので、$\nu$ は螺旋に沿った弧長そのものに対応します。
界をベクトルとして読む
コルニュ螺旋の威力は、回折界 $E/E_0$ を螺旋上のベクトルとして直接読み取れる点にあります。前節の結果を見ると、回折積分の値は
$$ \int_{\nu}^{\infty}\exp\left(-j\frac{\pi}{2}t^2\right)dt = \left[\tfrac12 – C(\nu)\right] – j\left[\tfrac12 – S(\nu)\right] $$
でした。これは複素平面上で、始点 $(C(\nu), S(\nu))$ から終点 $(\tfrac12, \tfrac12)$ へ向かうベクトル(の複素数表現、ただし虚部の符号に注意)に対応します。つまり、
回折界の大きさ $\propto$ 「螺旋上の点 $(C(\nu), S(\nu))$ から、上の収束点 $(\tfrac12, \tfrac12)$ までを直線で結んだ線分(フェーザ)の長さ」
という、極めて視覚的な対応が成り立ちます。回折損失を求める計算が、螺旋上の「現在地」から「上の渦の中心」までの距離を測る作業に置き換わるわけです。
この見方でいくつかの代表的なケースを読み解いてみましょう。
- 完全な見通し($\nu \to -\infty$): 現在地は下の収束点 $(-\tfrac12,-\tfrac12)$ にあります。そこから上の収束点 $(\tfrac12,\tfrac12)$ までの線分の長さは $\sqrt{2}$ で、これに係数を掛けると $|E/E_0| = 1$、損失 0 dB です。波面がまったく遮られていない自由空間に一致します。
- ぎりぎり遮蔽($\nu = 0$): 現在地は原点 $(0,0)$ です。原点から $(\tfrac12,\tfrac12)$ までの線分の長さは、$(-\tfrac12,-\tfrac12)$ からの場合のちょうど半分になります。したがって $|E/E_0| = \tfrac12$、損失は約 6 dB です。これがエッジが見通し線をかすめる瞬間の損失です。
- 深い遮蔽($\nu \gg 0$): 現在地は上の収束点 $(\tfrac12,\tfrac12)$ のすぐ近くで渦を巻いています。収束点までの線分はどんどん短くなり、$|E/E_0| \to 0$、損失は急激に増大します。障害物に深く隠れるほど電波が届かなくなる、という直感と一致します。
ここで $\nu = 0$ の 6 dB という値の意味を補足します。$\nu = 0$(エッジが見通し線上)では、波面のちょうど上半分が遮られ、下半分が生き残ります。したがって生き残る素元波の寄与は自由空間の半分、すなわち振幅で $\tfrac12$ になります。電力では $(\tfrac12)^2 = \tfrac14$、対数で $-10\log_{10}(\tfrac14) \approx 6$ dB の損失です。「半分隠れたら 6 dB」という覚えやすい目安は、こうしてコルニュ螺旋の幾何学から自然に導かれます。
$\nu > 0$ で振動が消える理由
見通し内($\nu < 0$)では、現在地が下の渦の上をぐるぐる回りながら収束点へ向かうため、上の収束点までの線分の長さが伸び縮みします。これが受信電力の振動(リップル)として現れます。一方、見通し外($\nu > 0$)では現在地が上の収束点に向かって単調に渦を巻き込んでいくため、線分は単調に短くなり、振動せず滑らかに減衰します。この「見通し内では振動、見通し外では単調減衰」という回折損失曲線の特徴的な形は、コルニュ螺旋の二重渦構造を見れば一目で納得できます。
コルニュ螺旋によって回折界を幾何学的に把握できました。次は、よく使われる近似式を確認したうえで、Python で実際にフレネル積分を計算し、これらの直感を数値とグラフで確かめましょう。
実用的な近似式
厳密なフレネル積分は数値計算が必要ですが、現場では簡便な近似式もよく使われます。最も有名なのが ITU-R 勧告(P.526)でも採用されている、$\nu > -0.7$ で有効な近似式です。
$$ L_{\text{diff}}(\nu) \approx 6.9 + 20\log_{10}\left(\sqrt{(\nu – 0.1)^2 + 1} + \nu – 0.1\right) \quad [\text{dB}] $$
この式は $\nu = 0$ で約 6 dB を与え、$\nu$ が大きい領域では $\nu$ の増加とともにほぼ直線的に損失が増えることを表します。第 1 フレネルゾーンの半分以上が確保される $\nu < -0.78$ あたりでは回折損失をほぼ 0 dB とみなしてよい、という運用上の目安もここから来ています。
近似式は手計算には便利ですが、振動領域($\nu < 0$)の細かい挙動までは再現しません。厳密な振る舞いを知るには、やはりフレネル積分を直接計算するのが確実です。次節で Python による厳密計算と近似式を並べて比較してみましょう。
Python による実装と可視化
フレネル積分の数値計算と回折界の確認
まず、scipy.special.fresnel を使ってフレネル積分 $S(\nu), C(\nu)$ を計算し、回折界の比 $E/E_0$ を求めてみます。SciPy の fresnel(x) は $S(x), C(x)$ をこの順(正弦・余弦)のタプルで返すことに注意してください。
import numpy as np
from scipy.special import fresnel
# フレネルパラメータ nu に対する回折界 E/E0 を計算する関数
def diffraction_field(nu):
"""ナイフエッジ回折界 E/E0 (複素数) を返す"""
S, C = fresnel(nu) # S(nu), C(nu) の順で返る
# 回折積分 ∫_nu^∞ exp(-j π/2 t^2) dt = (1/2 - C) - j(1/2 - S)
integral = (0.5 - C) - 1j * (0.5 - S)
return (1 + 1j) / 2 * integral
# 代表的な nu での回折界と損失を表示
for nu in [-2.0, -0.78, 0.0, 1.0, 2.0, 3.0]:
F = diffraction_field(nu)
loss = -20 * np.log10(abs(F))
print(f"nu = {nu:+.2f}: |E/E0| = {abs(F):.4f}, 損失 = {loss:6.2f} dB")
実行すると、$\nu = 0$ で $|E/E_0|$ がほぼ 0.5、損失が約 6.0 dB となり、本文で導いた「ぎりぎり遮蔽で 6 dB」という結果が数値的に確認できます。$\nu = -2.0$ では損失がほぼ 0 dB に近く(実際には微小な振動の影響で 0 dB 前後)、見通しが十分に確保された状態に対応します。一方 $\nu = 3.0$ では損失が 20 dB を超え、深い遮蔽で電波が大きく減衰することがわかります。
コルニュ螺旋の描画
次に、回折を幾何学的に理解する鍵であるコルニュ螺旋を描きます。あわせて、$\nu = 0$ における「現在地から上の収束点までのフェーザ」も矢印で描き込み、6 dB 損失の幾何学的意味を可視化します。
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import fresnel
# nu を広い範囲で動かして C(nu), S(nu) を計算
nu = np.linspace(-6, 6, 4000)
S, C = fresnel(nu)
plt.figure(figsize=(7, 7))
plt.plot(C, S, color='royalblue', lw=1.0, label='Cornu spiral')
# 2つの収束点 (±1/2, ±1/2)
plt.plot(0.5, 0.5, 'o', color='crimson', ms=8, label=r'$(\frac{1}{2},\frac{1}{2})$ ($\nu\to+\infty$)')
plt.plot(-0.5, -0.5, 'o', color='green', ms=8, label=r'$(-\frac{1}{2},-\frac{1}{2})$ ($\nu\to-\infty$)')
# nu=0 (原点) から上の収束点へのフェーザ
plt.annotate('', xy=(0.5, 0.5), xytext=(0.0, 0.0),
arrowprops=dict(arrowstyle='->', color='darkorange', lw=2))
plt.plot(0.0, 0.0, 'ks', ms=6, label=r'$\nu=0$ (origin)')
plt.xlabel('C(ν)')
plt.ylabel('S(ν)')
plt.title('Cornu Spiral and the ν=0 Phasor')
plt.axhline(0, color='gray', lw=0.5)
plt.axvline(0, color='gray', lw=0.5)
plt.gca().set_aspect('equal')
plt.legend(loc='lower right', fontsize=9)
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('cornu_spiral.png', dpi=150, bbox_inches='tight')
plt.show()
この図から、コルニュ螺旋が上下 2 つの渦巻きを持ち、それぞれ $(\tfrac12,\tfrac12)$ と $(-\tfrac12,-\tfrac12)$ に収束する様子がはっきり読み取れます。オレンジの矢印は $\nu = 0$ のフェーザ(原点から上の収束点まで)で、その長さは下の収束点から測った場合(自由空間に対応、長さ $\sqrt2$)のちょうど半分です。これが $|E/E_0| = 0.5$、すなわち 6 dB 損失の幾何学的な正体です。見通し内(曲線の左下側)では現在地が渦の上を周回するため収束点までの距離が伸び縮みし、これが後で見る損失曲線の振動に対応します。
回折損失曲線の可視化
いよいよ本命の、フレネルパラメータ $\nu$ に対する回折損失曲線を描きます。厳密計算(フレネル積分)と ITU-R 近似式を重ねて比較しましょう。
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import fresnel
def diffraction_loss_exact(nu):
"""厳密な回折損失 [dB]"""
S, C = fresnel(nu)
F = (1 + 1j) / 2 * ((0.5 - C) - 1j * (0.5 - S))
return -20 * np.log10(np.abs(F))
def diffraction_loss_itu(nu):
"""ITU-R P.526 近似 (nu > -0.7 で有効) [dB]"""
return 6.9 + 20 * np.log10(np.sqrt((nu - 0.1)**2 + 1) + nu - 0.1)
nu = np.linspace(-3, 5, 1000)
loss_exact = diffraction_loss_exact(nu)
loss_itu = diffraction_loss_itu(nu)
plt.figure(figsize=(9, 5.5))
plt.plot(nu, loss_exact, color='royalblue', lw=2, label='Exact (Fresnel integral)')
plt.plot(nu, loss_itu, '--', color='crimson', lw=1.8, label='ITU-R P.526 approx.')
# nu=0 で約6dB を強調
plt.plot(0, diffraction_loss_exact(np.array([0.0]))[0], 'ko', ms=7)
plt.annotate('ν=0 → ≈6 dB', xy=(0, 6), xytext=(0.6, 2),
arrowprops=dict(arrowstyle='->'), fontsize=11)
plt.gca().invert_yaxis() # 損失が大きいほど下に向くよう反転
plt.xlabel('Fresnel parameter ν')
plt.ylabel('Diffraction loss [dB]')
plt.title('Knife-Edge Diffraction Loss vs ν')
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('knife_edge_loss.png', dpi=150, bbox_inches='tight')
plt.show()
この損失曲線から、ナイフエッジ回折の本質的な特徴がすべて読み取れます。第 1 に、$\nu = 0$ でちょうど約 6 dB の損失となり、本文の導出およびコルニュ螺旋の幾何学と完全に一致します。第 2 に、見通し外領域($\nu > 0$)では損失が単調に増加し、$\nu$ が大きいところでほぼ直線的に増えていきます — これは現在地が上の収束点に渦を巻きながら近づき、フェーザが単調に短くなることの帰結です。第 3 に、見通し内領域($\nu < 0$)では損失が 0 dB 付近で振動しており、ところによっては損失が負(自由空間より受信電力が大きい)になる箇所さえあります。これは下の渦を周回することで生じるリップルで、フレネルゾーンが部分的に開けたり塞がったりする干渉効果に対応します。ITU-R 近似式(破線)は $\nu > -0.7$ の範囲で厳密解とよく一致しますが、振動領域の細かい挙動は再現しないことも見て取れます。
具体的な伝搬シナリオでの損失計算
最後に、実際の数値を入れて回折損失を計算してみましょう。周波数 2 GHz(移動通信帯)の電波が、送信点から 2 km の地点にある高さ $h$ の障害物(ビルや丘)を越えて、さらに 1 km 先の受信点に届く状況を考えます。障害物の高さ(見通し線基準)を変化させたとき、回折損失がどう変わるかを描きます。
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import fresnel
# 伝搬条件
f = 2.0e9 # 周波数 2 GHz
c = 3.0e8 # 光速
lam = c / f # 波長 [m]
d1 = 2000.0 # 送信点〜エッジ [m]
d2 = 1000.0 # エッジ〜受信点 [m]
# 障害物高さ h (見通し線基準) を -30 m 〜 +60 m で変化
h = np.linspace(-30, 60, 600)
# フレネルパラメータ
nu = h * np.sqrt(2.0 / lam * (1.0 / d1 + 1.0 / d2))
# 厳密な回折損失
S, C = fresnel(nu)
F = (1 + 1j) / 2 * ((0.5 - C) - 1j * (0.5 - S))
loss = -20 * np.log10(np.abs(F))
plt.figure(figsize=(9, 5.5))
plt.plot(h, loss, color='teal', lw=2)
plt.axvline(0, color='gray', ls=':', label='見通し線 (h=0)')
plt.gca().invert_yaxis()
plt.xlabel('障害物高さ h [m] (見通し線基準)')
plt.ylabel('回折損失 [dB]')
plt.title(f'Knife-Edge Diffraction Loss (f={f/1e9:.0f} GHz, d1={d1/1e3:.0f} km, d2={d2/1e3:.0f} km)')
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('knife_edge_scenario.png', dpi=150, bbox_inches='tight')
plt.show()
# 代表点の数値
for hh in [-10, 0, 10, 30, 50]:
nn = hh * np.sqrt(2.0 / lam * (1.0 / d1 + 1.0 / d2))
Si, Ci = fresnel(nn)
Fi = (1 + 1j) / 2 * ((0.5 - Ci) - 1j * (0.5 - Si))
print(f"h = {hh:+3d} m → ν = {nn:+.2f}, 損失 = {-20*np.log10(abs(Fi)):5.1f} dB")
このシナリオの結果から、障害物が見通し線にちょうど達したとき($h = 0$)の損失が約 6 dB であり、障害物がさらに高くなるにつれて損失が急増していく様子が定量的に確認できます。波長 15 cm(2 GHz)に対し、わずか数十メートルの障害物高さでフレネルパラメータが 1 を超え、損失が十数 dB に達することがわかります。逆に障害物が見通し線より十分低い($h < 0$)領域では損失がほぼ 0 dB の付近で振動し、見通しが確保されていれば回折の影響は小さいことが読み取れます。同じ障害物でも、周波数が高い(波長が短い)ほど $\nu$ が大きくなって損失が増えるため、ミリ波帯では同じ地形でも回折損失が深刻になる、という実務上重要な示唆も得られます。
まとめ
本記事では、見通し外伝搬におけるナイフエッジ回折損失を、回折の物理から数値計算まで一貫して解説しました。要点を整理します。
- 回折はホイヘンスの原理に基づく「遮られなかった波面からの素元波の重ね合わせ」であり、障害物の裏側にも電波が回り込む
- 回折の強さは、障害物高さ $h$・波長 $\lambda$・距離 $d_1, d_2$ を一つにまとめたフレネルパラメータ $\nu = h\sqrt{\frac{2}{\lambda}\left(\frac{1}{d_1}+\frac{1}{d_2}\right)}$ だけで決まる
- フレネル・キルヒホッフ回折積分を解くと、回折界の比は $\dfrac{E}{E_0} = \dfrac{1+j}{2}\left\{[\tfrac12 – C(\nu)] – j[\tfrac12 – S(\nu)]\right\}$ とフレネル積分 $C(\nu), S(\nu)$ で表せる
- コルニュ螺旋上で「現在地から上の収束点までのフェーザ長」を測ることが回折界の絶対値に対応し、$\nu = 0$ で振幅 $\tfrac12$、すなわち約 6 dB 損失となる幾何学的理由が見える
- 損失曲線は見通し外($\nu > 0$)で単調増加、見通し内($\nu < 0$)で振動するという特徴を持ち、ITU-R 近似式とよく一致する
ナイフエッジ回折は、単一の障害物に対する最も基本的な回折モデルです。実際の地形では複数の山やビルが連なるため、複数ナイフエッジ回折(Bullington 法、Deygout 法、Epstein-Peterson 法など)への拡張や、現実の丸みを帯びた地形に対する円柱回折モデルへと発展していきます。また、回折損失は伝搬路全体の電波伝搬モデルの中で、自由空間損失に上乗せされる付加損失として組み込まれます。
次のステップとして、以下の記事も参考にしてください。