从物理学的机制出发,波动模型相对于光线模型,显然更加接近光的本质;但是从物理学的发展来说,波动光学旨在解决几何光学无法解决的问题,可谓光线模型的一种升级。从编程的角度来说,波动光学在某些情况下可以简单地理解为在光线模型的基础上,引入一个相位项。
一般来说,三个特征可以确定空间中的波场:频率、振幅和相位,故光波场可表示为:
E = A c o s ( ω t − k r ) E = Acos(\omega t-kr) E=Acos(ωt−kr)
其中, A A A为振幅, ω = 2 π f = 2 π T \omega=2\pi f=\frac{2\pi}{T} ω=2πf=T2π为角频率, k = 2 π λ k=\frac{2\pi}{\lambda} k=λ2π,为波数。由上式可知,当时间固定时,光在传播方向上有一个正弦波的外形;而对于空间中任意一点,沿着振幅方向则进行简谐运动。
其中,振幅、波数以及空间位置均为矢量,当坐标比较混乱的时候,也可以写成 E ⃗ = A ⃗ c o s ( ω t − k ⃗ r ⃗ ) \vec E = \vec{A}cos(\omega t-\vec k\vec r) E=Acos(ωt−kr);有时为了计算方便,也可以写成指数形式
E = A e − i ( ω t − k r ) E = Ae^{-i(\omega t-kr)} E=Ae−i(ωt−kr)
对于平面波来说,其发散角为0,即光场中的所有点,都具有统一的传播方向,且振幅相等。设其传播方向为 z z z,则可写为
E = A c o s ( ω t − k z ) E = Acos(\omega t-kz) E=Acos(ωt−kz)
球面波则相对复杂,令 r r r为空间中任意一点到点光源的距离,则对于 a 、 b a、b a、b两点来说,其单位面积的光通量之比为 I a I b = r b 2 r a 2 \frac{I_a}{I_b}=\frac{r^2_b}{r^2_a} IbIa=ra2rb2,则振幅之比为 E b E a = r a r b \frac{E_b}{E_a}=\frac{r_a}{r_b} EaEb=rbra。这说明球面波振幅反比于波阵面到光源距离,即
E = A ⃗ r e − i ( ω t − k ⃗ r ⃗ ) E = \frac{\vec A}{r}e^{-i(\omega t-\vec k\vec r)} E=rAe−i(ωt−kr)
通过截取 x O z xOz xOz平面,假设光波长为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 = A c o s ( ω t − k r ) E = Acos(\omega t-kr) E=Acos(ωt−kr)表示一个在空间中沿着一个方向传播的简谐波。如果现有多个频率相同的光波共同传播,那么由于不同光波之间可能存在相位差,虽然在任意一点上仍旧有着简谐运动的形式,但在任意时刻,其波峰波谷的位置显然不同。故可以写为
E = A ( r ) cos ( ω t − g ( r ) ) E=A(\bf{r})\cos(\omega t-g(\bf{r})) E=A(r)cos(ωt−g(r))
指数形式为
E = A ( r ) e i g ( r ) e − i ω t E=A(\bf{r})e^{ig(\bf{r})}e^{-i\omega t} E=A(r)eig(r)e−iωt
其中, g ( r ) g(r) g(r)为常数,被称为等相位面,等相面并不重合的光波叫做非均匀波,即非均匀波可能在空间上不具备可计算的周期性。除非 ω t − g ( r ) \omega t-g(\bf{r}) ωt−g(r)的全微分为0,即 ω d t − grad g d r = 0 \omega dt-\text{grad}g\text{d}\bf{r}=0 ωdt−gradgdr=0。
→ d r d t = ω grad g \to \frac{\text{d}\bf{r}}{\text{d}t}=\frac{\omega}{\text{grad}g} →dtdr=gradgω
当 r \bf{r} r的方向垂直于等相面时,上式数值最小,为
v p ( r ) = ω ∣ grad g ∣ v_p(\bf{r})=\frac{\omega}{|\text{grad}g|} vp(r)=∣gradg∣ω
该式表示各等相位面前进的速度,为 相速度 \textbf{相速度} 相速度。
对于平面波来说, g ( r ) = k ⋅ r − δ g(\bf r)=k \cdot r-\delta g(r)=k⋅r−δ,则
v p = ω k = c ε μ v_p=\frac{\omega}{k}=\frac{c}{\sqrt{\varepsilon\mu}} vp=kω=εμc
当光波是由一群频率不同的光的叠加时,相速度便难以衡量光束的传播特性,也几乎是不可测的。而真实的光波往往是不同频率单色波的叠加
E ( r , t ) = ∫ 0 ∞ A ω ( r ) [ ω t − g ω ( r ) ] E(\mathbf{r},t)=\int_0^\infty A_\omega(\mathbf{r})[\omega t-g_\omega(\mathbf{r})] E(r,t)=∫0∞Aω(r)[ωt−gω(r)]
对于两个平面单色波来说,如果二者频率和相位都比较相近,振幅相同,且都沿着 z z z轴传播,则对振幅进行归一化,上式可以简化为
E ( z , t ) a = cos ( ω t − k z ) + cos [ ( ω + δ ω ) t − ( k + δ k ) z ] → e − i ( ω t − k z ) + e − i [ ( ω + δ ω ) t − ( k + δ k ) z ] = 2 cos [ 1 2 ( t δ ω − z δ k ) ] e − i ( ω ˉ t − k ˉ z ) → 2 cos [ 1 2 ( t δ ω − z δ k ) ] cos ( ω ˉ t − k ˉ z ) 其中 ω ˉ = ω + 1 2 δ ω , k ˉ = k + 1 2 δ 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} aE(z,t)=→=→其中cos(ωt−kz)+cos[(ω+δω)t−(k+δk)z]e−i(ωt−kz)+e−i[(ω+δω)t−(k+δk)z]2cos[21(tδω−zδk)]e−i(ωˉt−kˉz)2cos[21(tδω−zδk)]cos(ωˉt−kˉz)ωˉ=ω+21δω,kˉ=k+21δk
假设两列波的波长分别为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} δt=ωˉ2πδz=kˉ2π
则定义
v g = δ z δ t = ω ˉ k ˉ v_g=\frac{\delta z}{\delta t}=\frac{\bar\omega}{\bar k} vg=δtδz=kˉωˉ
为群速度,表示波包的传播速度。