30行Python代码模拟物理光学现象:双缝干涉

  单色光照射到具有两条狭缝的挡板上,这狭缝相距很近,通常在微米量级。从两条狭缝****出来的光波相位差恒定,频率相同。两束光在档板后的空间相互叠加而发生干涉现象,在屏上产生了明暗相间的干涉条纹。当屏上的某点与两缝的光程差是半波长的偶数倍时,形成亮条纹,是半个波长的奇数倍时,出现暗条纹。

  实验室一般会用波长约为589nm的钠黄光作为干涉光源,上图中的a点就是光源所在处。钠光灯可以看做是点光源,其****的光波为球面波。球面波在一个平面上的传播方程可以简单写为:A=A0 * cos(w(t-r/v)+q) ,其中A为振幅,w为角频率,r为某点离光源的距离,t为传播时间,q为初始相位。为了方便计算空间各点的振幅,该公式能用python定义为一个函数方便重复调用:

  当光波到达b,c两条狭缝时,根据惠更斯原理,b,c两点会成为新的“子波源”,因此,b,c两个波源****的光波具有相同的频率,恒定的相位差,成为相干光。假设两波源的初始相位都为零,根据上述python语言的函数定义,b,c两点的光波传播函数分别为:

  根据光强的计算公式,能够获得光强是正比于振幅A的平方。干涉场空间各点的振幅为两振幅的叠加,也就是b_A+c_A,所以空间的各点光强定义为函数:

  在某时刻干涉光场的解为f(0,x, y),采用matplotlib绘图库将干涉场各点的光强显示出来。执行ax.imshow(f(0,x, y)),就能够正常的看到等间距的明暗光波叠加的效果。

  计算多个时刻的定态光波干涉场,然后将这些图像制作为视频或动画就能够正常的看到动态光波的效果,下图就是干涉光波传播的效果动画。

  我们上面介绍了光波的定态和动态效果图,但并不意味着人眼所看到的就是明暗相间的散点。我们人眼所看到的效果是长时间光照射的叠加效果,比如,我们在看电风扇转动时,你只能看见一个圆盘,而不会看到三个叶片。再比如,显示屏是逐行扫描的,而我们正真看到的却是一幅图像。这一切都是由于视觉暂留效应,我们人眼并不能分辨出很短时间内的图像变化。干涉场也是这样,光波都是在飞秒时间内变化,我们没办法分辨短时间光明暗的变化。在干涉场内,如果一个地方时亮时暗,我们看起来就是亮;如果一个地方一直暗看起来才会是暗。用Python模拟这种效果,就是简单将各个时刻的光波场叠加,就能够正常的看到明暗相间的条纹。

  *博客内容为网友个人发布,仅代表博主个人自己的观点,如有侵权请联系工作人员删除。


-->