소나 방정식
빛이 거의 안 가는 수중에서는 소리가 눈을 대신합니다. 그렇다면 "이 잠수함을 탐지할 수 있는가?"를 어떻게 계산할까요? 답은 소나 방정식 — 신호와 잡음의 수지를 데시벨(dB)로 따지는 음향의 회계장부입니다.
신호 대 잡음의 회계
탐지는 결국 신호가 잡음보다 충분히 큰가의 문제입니다. 능동 소나(내가 쏘고 반향을 듣기)의 방정식은 이렇습니다.
SNR = SL − 2·TL + TS − NL − DT
- SL (Source Level) — 내가 쏜 소리의 세기
- TL (Transmission Loss) — 전달손실. 거리·굴절·흡수로 약해지는 양
- TS (Target Strength) — 표적이 되돌리는 반향의 세기
- NL (Noise Level) — 주변 소음
- DT (Detection Threshold) — 탐지에 필요한 최소 SNR
SNR이 0보다 크면 탐지, 작으면 못 들음. 이 한 줄로 "탐지 거리"가 나옵니다 — TL이 거리에 따라 커지다가 SNR이 0이 되는 지점이 최대 탐지 거리입니다.
능동은 2·TL, 수동은 TL — 경로가 다르다
여기서 가장 중요한 구분이 있습니다. 소리가 가는 길이 왕복이냐 편도냐입니다.
도식 렌더링 중…
- 능동 소나 — 내가 쏜 소리가 표적까지 갔다가(TL) 반향이 돌아오니(TL) 2·TL.
- 수동 소나 — 표적이 내는 소음이 내게 오기까지 편도 TL. 대신 표적 강도(TS) 대신 표적의 방사 소음을 씁니다.
⚠️ 두 식을 섞으면 신호가 틀린다 — 수동(편도)인데 능동(왕복)용 2·TL을 쓰면, 신호가 실제보다 훨씬 약하게 계산돼 "탐지 불가"라는 거짓 결론이 납니다. 같은 "음향"이라도 경로 구조(왕복/편도)에 맞는 식을 써야 합니다 — 이건 실제로 겪은 silent한 오류였습니다.
두 식의 차이는 코드로 보면 명확합니다 — 능동은 2·TL, 수동은 TL.
# 능동 소나: 신호 대 잡음(dB) — TL을 왕복(2×)으로 겪는다
def active_snr(SL, TL, TS, NL):
return SL - 2*TL + TS - NL # > DT 이면 탐지
# 수동 소나: 표적 소음을 편도(1×)로 듣는다
def passive_snr(SL, TL, NL, DI):
return SL - TL - NL + DI # 능동의 2·TL 을 쓰면 신호가 틀린다
전달손실은 광선이 아니라 음선으로
TL의 정확한 계산이 관건인데, 음파는 수온·염도·깊이에 따라 휘어집니다. 그래서 직선이 아니라 음선(ray)을 추적해 TL을 구합니다(BELLHOP 같은 음향 모델). 음속이 깊이마다 달라 생기는 음영대(shadow zone)·수렴대(convergence zone)까지 재현해야 탐지 계산이 현실과 맞습니다.
💡 ASW 킬 체인의 1단계 — 대잠전(ASW)은 탐지(detect)→식별(classify)→위치확정(localize)→타격(prosecute)으로 이어집니다. 소나 방정식은 그 첫 단계를 정량화합니다. 첫 단추(탐지)가 물리적으로 맞아야 그 뒤의 모든 전술이 의미를 가집니다.
한 줄 정리
📌 소나 방정식은 신호와 잡음의 dB 회계로 탐지를 계산한다 — 능동은 왕복이라 2·TL, 수동은 편도라 TL. 둘을 섞으면 신호가 틀린다. 전달손실(TL)은 음선 추적으로 구하며, 이 식이 ASW 킬 체인(탐지→식별→위치→타격)의 첫 단계를 떠받친다.
