通過python理解相速度和羣速度

從物理學的機制出發,波動模型相對於光線模型,顯然更加接近光的本質;但是從物理學的發展來說,波動光學旨在解決幾何光學無法解決的問題,可謂光線模型的一種升級。從編程的角度來說,波動光學在某些情況下可以簡單地理解爲在光線模型的基礎上,引入一個相位項。

波動模型

一般來說,三個特徵可以確定空間中的波場:頻率、振幅和相位,故光波場可表示爲:

E=Acos(ωtkr) E = Acos(\omega t-kr)

其中,AA爲振幅,ω=2πf=2πT\omega=2\pi f=\frac{2\pi}{T}爲角頻率,k=2πλk=\frac{2\pi}{\lambda},爲波數。由上式可知,當時間固定時,光在傳播方向上有一個正弦波的外形;而對於空間中任意一點,沿着振幅方向則進行簡諧運動。

其中,振幅、波數以及空間位置均爲矢量,當座標比較混亂的時候,也可以寫成E=Acos(ωtkr)\vec E = \vec{A}cos(\omega t-\vec k\vec r);有時爲了計算方便,也可以寫成指數形式

E=Aei(ωtkr) E = Ae^{-i(\omega t-kr)}

對於平面波來說,其發散角爲0,即光場中的所有點,都具有統一的傳播方向,且振幅相等。設其傳播方向爲zz,則可寫爲

E=Acos(ωtkz) E = Acos(\omega t-kz)

球面波則相對複雜,令rr爲空間中任意一點到點光源的距離,則對於aba、b兩點來說,其單位面積的光通量之比爲IaIb=rb2ra2\frac{I_a}{I_b}=\frac{r^2_b}{r^2_a},則振幅之比爲EbEa=rarb\frac{E_b}{E_a}=\frac{r_a}{r_b}。這說明球面波振幅反比于波陣面到光源距離,即

E=Arei(ωtkr) E = \frac{\vec A}{r}e^{-i(\omega t-\vec k\vec r)}

通過截取xOzxOz平面,假設光波長爲532nm,則可以畫出這一截面處的光波振幅圖。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
z = np.arange(15,200)*10    #單位爲nm
x = np.arange(15,200)*10
x,z = np.meshgrid(x,z)      #創建座標系
E = 1/np.sqrt(x**2+z**2)*np.cos(2*np.pi*np.sqrt(x**2+z**2)/(532*1e-9))
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x,z,E)
plt.show()

其結果如圖所示

在這裏插入圖片描述

相速度

經典的光波公式E=Acos(ωtkr)E = Acos(\omega t-kr)表示一個在空間中沿着一個方向傳播的簡諧波。如果現有多個頻率相同的光波共同傳播,那麼由於不同光波之間可能存在相位差,雖然在任意一點上仍舊有着簡諧運動的形式,但在任意時刻,其波峯波谷的位置顯然不同。故可以寫爲

E=A(r)cos(ωtg(r)) E=A(\bf{r})\cos(\omega t-g(\bf{r}))

指數形式爲

E=A(r)eig(r)eiωtE=A(\bf{r})e^{ig(\bf{r})}e^{-i\omega t}

其中,g(r)g(r)爲常數,被稱爲等相位面,等相面並不重合的光波叫做非均勻波,即非均勻波可能在空間上不具備可計算的週期性。除非ωtg(r)\omega t-g(\bf{r})的全微分爲0,即ωdtgradgdr=0\omega dt-\text{grad}g\text{d}\bf{r}=0

drdt=ωgradg \to \frac{\text{d}\bf{r}}{\text{d}t}=\frac{\omega}{\text{grad}g}

r\bf{r}的方向垂直於等相面時,上式數值最小,爲

vp(r)=ωgradgv_p(\bf{r})=\frac{\omega}{|\text{grad}g|}

該式表示各等相位面前進的速度,爲相速度\textbf{相速度}

羣速度

對於平面波來說,g(r)=krδg(\bf r)=k \cdot r-\delta,則

vp=ωk=cεμv_p=\frac{\omega}{k}=\frac{c}{\sqrt{\varepsilon\mu}}

當光波是由一羣頻率不同的光的疊加時,相速度便難以衡量光束的傳播特性,也幾乎是不可測的。而真實的光波往往是不同頻率單色波的疊加

E(r,t)=0Aω(r)[ωtgω(r)]E(\mathbf{r},t)=\int_0^\infty A_\omega(\mathbf{r})[\omega t-g_\omega(\mathbf{r})]

對於兩個平面單色波來說,如果二者頻率和相位都比較相近,振幅相同,且都沿着zz軸傳播,則對振幅進行歸一化,上式可以簡化爲

E(z,t)a=cos(ωtkz)+cos[(ω+δω)t(k+δk)z]ei(ωtkz)+ei[(ω+δω)t(k+δk)z]=2cos[12(tδωzδk)]ei(ωˉtkˉz)2cos[12(tδωzδk)]cos(ωˉtkˉz)其中ωˉ=ω+12δω,kˉ=k+12δk\begin{aligned} \frac{E(z,t)}{a}=&\cos{(\omega t-kz)}+\cos{[(\omega+\delta\omega)t-(k+\delta k)z]}\\ \to&e^{-i(\omega t-kz)}+e^{-i[(\omega+\delta\omega)t-(k+\delta k)z]}\\ =&2\cos[\frac{1}{2}(t\delta\omega-z\delta k)]e^{-i(\bar\omega t-\bar kz)}\\ \to&2\cos[\frac{1}{2}(t\delta\omega-z\delta k)]\cos{(\bar\omega t-\bar kz)}\\ \text{其中}&\quad\bar\omega=\omega+\frac{1}{2}\delta\omega,\quad \bar k=k+\frac{1}{2}\delta k \end{aligned}

假設兩列波的波長分別爲532nm和600nm,則在同一時刻,不同位置處的光波振幅可通過python畫出

def wavePacket(d = [532e-9,600e-9]):
    d = np.array(d)
    k = 2*np.pi/d           #波數
    dk = k[0]-k[1]          #波數差
    bk = k[1]+dk/2          #平均波數

    z = np.arange(10000)/1e9  #位置爲0到10um

    E0 = np.cos(-k[0]*z)
    E1 = np.cos(-k[1]*z)
    E = E0+E1
    #E = 2*np.cos(-dk/2*z)*np.cos(-bk*z)

    fig = plt.figure()
    plt.plot(z,E0,'--',color='red',label='E0')
    plt.plot(z,E1,'--',color='blue',label='E1')
    plt.plot(z,E,'-',color='green',label='E')
    plt.legend()
    plt.show()

在這裏插入圖片描述

可見每間隔一段距離或者時間就會出現一個比較大的振幅,其極大間隔可以通過表達式求出

δt=2πωˉδz=2πkˉ \delta t = \frac{2\pi}{\bar\omega}\quad\delta z=\frac{2\pi}{\bar k}

則定義

vg=δzδt=ωˉkˉ v_g=\frac{\delta z}{\delta t}=\frac{\bar\omega}{\bar k}

爲羣速度,表示波包的傳播速度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章