Python理解光的干涉 Python光学仿真之对光的干涉理解学习
微小冷 人气:0想了解Python光学仿真之对光的干涉理解学习的相关内容吗,微小冷在本文为您仔细讲解Python理解光的干涉的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Python光学仿真,Python光的干涉,下面大家一起来学习吧。
光的干涉
干涉即两束光在叠加过程中出现的强度周期性变化情况,其最简单的案例即为杨氏双缝干涉。
如图所示,光从 S S S点发出,通过两个狭缝 S 1 , S 2 S_1,S_2 S1,S2,最终汇聚在右侧的干涉屏上,在不同位置处将会产生不同的相位差。
import numpy as np import matplotlib.pyplot as plt #两束光叠加 waveAdd = lambda I1,I2,theta : I1+I2+2*np.sqrt(I1*I2)*np.cos(theta) #同一束光经过小孔之后的光程差,dSlit为小孔间距,dWave为波长 #point为衍射屏上某点,theta为衍射屏相对小孔所在直线倾角 def interSlit(dSlit,point=(1,1,1),n=1,dWave=1.06e-6): pVar = sum(np.array(point)**2) + 0.25*dSlit**2 delt = 2*np.pi*n/dWave*( np.sqrt(pVar+point[0]*dSlit)- np.sqrt(pVar-point[0]*dSlit)) return delt #杨氏干涉,只考虑x方向 #dSlit:小孔间距;dScreen:衍射屏距离 #nGrid:网格个数;dGrid:网格间距 def interYang(dSlit=1e-3,dScreen=1,n=1,I1=1,I2=1, dWave=1.06e-6,nGrid=500,dGrid=1e-5): xAxis = np.arange(-nGrid,nGrid+1)*dGrid I = [waveAdd(I1,I2,interSlit( dSlit,(x,0,dScreen),n,dWave)) for x in xAxis] plt.plot(xAxis,I) plt.show()
得到的衍射强度图为
双缝干涉是一个非常实用的模型,可以应用到许多光学装置中,例如Fresnel双面镜,Fresnel双棱镜,Lloyds镜,Billet剖开透镜等等。其中Frenel双面镜如图所示
光源入射到双面镜之后在镜后产生了两个像点 P , Q 二者相当于一对小孔,于是可以在右侧的干涉屏上产生干涉。
其仿真过程与杨氏干涉只差一个小孔的转换,图像亦如出一辙。
#alpha为双镜锐角,dSA为光源到劈点距离,dScreen为S像点连线到干涉屏距离 def lensFresnel(alpha=0.1,dSA=1e-3,dScreen=1, n=1,I1=1,I2=1,dWave=1.06e-6, nGrid=500,dGrid=1e-4): dSlit = 2*dSA*np.sin(alpha) interYang(dSlit,dScreen,n,I1,I2,dWave,nGrid,dGrid)
加载全部内容