加法定理と波の干渉(ノイズキャンセリング)
「なぜ逆位相の音をぶつけると騒音が消えるのか?」三角関数の合成と音響工学の秘密
- 1
- 三角関数の加法定理(sin(α±β), cos(α±β))は、異なる角度や位相を持つ波の重ね合わせを計算する根幹の定理
- 2
- 同じ周期の2つの波 a sin θ + b cos θ は、合成公式により振幅 √(a²+b²) の単一のサイン波に統合できる
- 3
- ノイズキャンセリングイヤホンは、外の騒音と「振幅が等しく位相が180度(πラジアン)真逆の波」をマイクとスピーカーでぶつけ合わせ、sin θ + sin(θ + π) = sin θ - sin θ = 0 として音を完全に消滅させている
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
周期や位相が異なる複数の波が合流したとき、全体の音や電波がどう強め合い、あるいは打ち消し合うかを予測・計算するために体系化された。
身につく武器・思考力
複雑に入り組んだ波形をシンプルなサイン波の足し引きに分解・合成し、逆位相によって騒音を相殺する高度な波動制御の思考が身につく。
実社会・ITでの活躍現場
- •Apple AirPodsなどのアクティブノイズキャンセリング(ANC)イヤホン
- •シンセサイザーの音作り(加算合成による多様な楽器音の再現)
- •5GスマートフォンやWi-Fiの電波干渉防止(MIMOビームフォーミング)
- •AM/FMラジオの周波数変調・振幅変調回路
Layer 1 — 直感・シミュレーター
元の波(青)と追加波(緑)の振幅・周波数・位相差をスライダーで変更してみよう。「逆位相(位相差 180°)」に設定すると、重ね合わされた合成波(赤)の振幅がみるみる小さくなり、完全に一直線(振幅 0 = 無音)へと消え去るノイズキャンセリング現象を観察できる。
騒音を表す波 f(t) = A sin(ωt) を完全に打ち消して無音にするために、スピーカーから出力すべき「逆位相の波」g(t) はどれか?
Layer 2 — 定義・受験・証明
定義
三角関数の加法定理:
三角関数の合成(波の重ね合わせ):
公式・数理モデル
証明・導出
加法定理から三角関数の合成公式の導出: に対し、点 を座標平面上にとると、原点からの距離は である。 式全体を でくくると、
ここで を満たす角度 が必ず1つ存在する。 代入すると、
加法定理 を逆に適用することで、
が美しく導かれる。2つの異なる波の足し算が、単一の拡大されたサイン波に統合される物理的根拠である。
押さえておきたいポイント
- 加法定理は2倍角公式(、)や半角公式の親元の式である
- 積和の公式・和積の公式(高校数II)は、加法定理を足し引きすることで得られ、電波の振幅変調(AMラジオ)に直結する
- 波の干渉: 位相差が 0°(同位相)なら振幅は 2倍(建設的干渉)、180°(逆位相)なら振幅は 0(相殺的干渉)
- 周波数がわずかに異なる2つの波を足すと、振幅が周期的に膨らんだり縮んだりする「うなり(Beat)」が発生する
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
アクティブノイズキャンセリング(ANC)とオーディオ信号の逆位相相殺エンジン
外部マイクで集音した環境騒音シグナルに対し、デジタルシグナルプロセッサ(DSP)で位相反転(Inverted Phase)フィルタを適用し、内部スピーカーから逆位相波をリアルタイム再生して合成音圧を 0 に抑え込むアルゴリズム。
1// オーディオバッファにおけるノイズ相殺シミュレータ2function processActiveNoiseCancellation(3 noiseSignal: Float32Array,4 latencySamples: number = 0 // 位相遅れ補正5): { outputSignal: Float32Array; cancellationRatePercent: number } {6 const n = noiseSignal.length;7 // 逆位相波の生成: 反転 g(t) = -f(t)8 const antiNoiseSignal = new Float32Array(n);9 for (let i = 0; i < n; i++) {10 const srcIdx = i - latencySamples;11 antiNoiseSignal[i] = srcIdx >= 0 ? -noiseSignal[srcIdx] : 0;12 }1314 // 人の耳に届く合成波 = 騒音 + アンチノイズ15 const outputSignal = new Float32Array(n);16 let originalEnergy = 0;17 let cancelledEnergy = 0;1819 for (let i = 0; i < n; i++) {20 outputSignal[i] = noiseSignal[i] + antiNoiseSignal[i];21 originalEnergy += noiseSignal[i] * noiseSignal[i];22 cancelledEnergy += outputSignal[i] * outputSignal[i];23 }2425 const reduction = Math.max(0, 1 - Math.sqrt(cancelledEnergy / (originalEnergy || 1)));26 return {27 outputSignal,28 cancellationRatePercent: Math.round(reduction * 100),29 };30}3132// 例: 440Hzの純音騒音を逆位相波で相殺33const sampleRate = 44100;34const buffer = new Float32Array(100);35for (let i = 0; i < buffer.length; i++) {36 buffer[i] = Math.sin((2 * Math.PI * 440 * i) / sampleRate);37}3839const result = processActiveNoiseCancellation(buffer, 0); // 遅延なし理想条件40console.log(`消音率: ${result.cancellationRatePercent}%`); // 100% 消音41console.log(`合成後の最大音圧: ${Math.max(...result.outputSignal)}`); // 0
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元