波前(每 1/f 發出一個)
此刻傳到觀察者的波前
波源速度 vs
觀察者速度 vo
3D:空氣中的半球形波前
3D:馬赫錐(超音速)
3D 立體:拖曳旋轉、雙指或滾輪縮放(右鍵或雙指拖曳可平移)。拖曳觀察者、點地面或按方向鍵可以移動觀察者。每個波前是以「發出位置」為球心、半徑 v(t − te) 的球面,地面以上是半球;地面上的圓就是 2D 俯視圖,「剖開半球」會切掉靠近你的一半,看得到沿著道路的剖面。三個灰色的參考聽者靜止不動:道路前方、道路後方與路旁。救護車與人放大顯示,未依比例。
俯視圖,距離以公尺計(比例尺在左下角);救護車與觀察者的圖示放大顯示,未依比例。速度箭頭代表 0.5 秒內移動的距離。點畫面任一處或拖曳觀察者,可以改變觀察者的位置;沿道路拖曳救護車,可以改變它的起點(從頭開始)。鍵盤:選取畫面後按 Enter 在觀察者與救護車之間切換,方向鍵每次移動 10 m,按住 Shift 為 50 m。半透明的救護車標出「此刻聽到的聲音」發出時波源所在的位置。
音效:畫面上的 f 只有幾 Hz(才看得見一圈一圈的波前),所以喇叭播放的音高按比例放大——以 660 Hz 代表 f,聽到的是 660 Hz × f′/f;距離聲音發出的位置越遠,音量越小。
背後的物理
頻率 \(f\) 的波源每隔一個週期 \(1/f\) 發出一個波前。每個波前從「發出時波源所在的位置」以聲速 \(v\) 向四周擴散;聲速只由空氣決定,與波源怎麼動無關。波源靜止時,波前是一圈圈同心圓,間距為一個波長:
\[ \lambda = \frac{v}{f} \]
波源運動:前方被壓縮、後方被拉長
一個週期內,波前走了 \(v/f\),但波源也同方向前進了 \(v_s/f\) 才發出下一個波前。所以前方的間距變短、後方的間距變長:
\[ \lambda_{\text{前}} = \frac{v - v_s}{f}, \qquad \lambda_{\text{後}} = \frac{v + v_s}{f} \]
靜止的觀察者以速率 \(v\) 接收這些波,聽到 \(f' = v/\lambda\):
\[ f'_{\text{靠近}} = f\,\frac{v}{v - v_s} \gt f, \qquad f'_{\text{遠離}} = f\,\frac{v}{v + v_s} \lt f \]
觀察者運動:遇到波前的快慢改變
觀察者運動時,空氣中的波長不變,但波相對於觀察者的速率變成 \(v \pm v_o\)。把兩種效應合起來,就是都卜勒效應公式——朝向對方運動時取上面的符號:
\[ f' = f\,\frac{v \pm v_o}{v \mp v_s} \]
波源動與觀察者動,就算速率相同,結果也不一樣,因為空氣(介質)是靜止的。
波源從旁邊經過
你現在聽到的聲音,是波源稍早在它當時的位置(半透明的救護車)發出的。只有沿著「那個位置 → 你」這條連線的速度分量有影響。令 \(\hat{R}\) 為由發出位置指向觀察者的單位向量,\(u_s = \hat{R}\cdot\vec{v}_s\)、\(u_o = -\hat{R}\cdot\vec{v}_o\):
\[ f' = f\,\frac{v + u_o}{v - u_s} \]
救護車經過時,\(u_s\) 由 \(+v_s\) 連續變成 \(-v_s\),音調由高平滑地滑到低;救護車正好在你身旁時發出的那段聲音,你聽到的就是 \(f\)。
超過音速:馬赫錐與音爆
當 \(v_s \ge v\),波源追上自己發出的波前,波前在後方沿著一個圓錐(平面上是兩條直線)疊在一起,形成震波。錐的半頂角 \(\theta\) 滿足
\[ \sin\theta = \frac{v}{v_s} = \frac{1}{M}, \qquad M = \frac{v_s}{v} \]
在錐的前方完全聽不到聲音。錐面掃過觀察者時,大量波前同時抵達,就是音爆。之後觀察者會同時聽到兩個聲音:一個是波源遠離時發出的,另一個是更早、波源以超過音速靠近時發出的,它以相反的時間順序抵達(公式算出 \(f' \lt 0\),圖上以虛線畫出 \(|f'|\))。
觀察重點
- 量一量間距:在「波源靠近」,\(v_s = 120\ \mathrm{m/s}\)、\(f = 2\ \mathrm{Hz}\),波長標註顯示 \(\lambda_{\text{前}} = 110\ \mathrm{m}\)、\(\lambda_{\text{後}} = 230\ \mathrm{m}\),靜止時是 \(170\ \mathrm{m}\)。
- 先高後低:打開音效,執行「波源靠近」。\(f'(t)\) 圖一開始接近 \(f\,v/(v - v_s)\),救護車經過時往下滑,最後接近 \(f\,v/(v + v_s)\)(圖上的虛線參考線)。
- 離道路越近,音調掉得越急:把觀察者拖到緊鄰道路的地方再跑一次,音調下降得更突然;離道路遠時則慢慢改變。
- 波源動與觀察者動:比較波源以 \(v_s = 100\ \mathrm{m/s}\) 靠近靜止的觀察者,和觀察者以 \(v_o = 100\ \mathrm{m/s}\) 靠近靜止的波源:\(2 \times 340/240 = 2.83\ \mathrm{Hz}\) 與 \(2 \times 440/340 = 2.59\ \mathrm{Hz}\)。
- 音障:\(v_s = v\) 時所有波前在波源前端碰在一起,前方的觀察者在波源到達之前什麼都聽不到。
- 超音速:「超音速」(\(M = 1.6\))的錐半頂角 \(\theta = \sin^{-1}(1/1.6) \approx 38.7^\circ\)。注意錐面掃到觀察者時的音爆,以及之後同時出現的兩個聲音。
模擬方法
- 波源與觀察者做等速運動,空氣靜止。波源在 \(t = 0\) 開始發聲,每隔 \(1/f\) 發出一個波前;每個波前是以發出時刻 \(t_e\) 的波源位置為圓心、半徑 \(v(t - t_e)\) 的圓。
- 在時刻 \(t\) 傳到觀察者的聲音,是在滿足 \(|\vec{r}_o(t) - \vec{r}_s(t_e)| = v(t - t_e)\) 的時刻 \(t_e\) 發出的。等速直線運動時這是 \(t - t_e\) 的二次方程式,直接求精確解(馬赫錐內有兩個根,錐外沒有根)。
- 觀察者聽到的相位是 \(f\,t_e(t)\),所以 \(f' = f\,\mathrm{d}t_e/\mathrm{d}t\);對上面的條件微分,正好得到 \(f' = f\,(v + u_o)/(v - u_s)\)。單元測試用課本公式、數值微分與「波前個數守恆」驗證。
- 距離以公尺計,動畫以真實時間播放(慢動作時為 0.25 倍)。拖曳觀察者是直接把他搬到新位置,拖曳的動作不算速度。
- 3D 檢視和 2D 用同一個物理核心、同樣的參數與時間。聲音向四面八方傳播,所以每個波前其實是以 \(t_e\) 時的波源位置為球心、半徑 \(v(t - t_e)\) 的球面;波源在地面上,地面以上就是半球。波源與觀察者都在地面上,這些球面與地面的交線正好是 2D 的波前圓,所有頻率都相同。馬赫錐的頂點在波源,半頂角 \(\theta\) 滿足 \(\sin\theta = v/v_s\),一直延伸到與最早的波前相切處,斜邊長 \(t\sqrt{v_s^2 - v^2}\)。參考聽者的 \(f'\) 也用同一個推遲時間方程式算出。
參考資料