Python光学仿真理解Jones矩阵学习
目录
- Jones向量
- Jones矩阵
- Jones矩阵的表示
Jones向量 假设光波沿z轴传播,那么其三个方向的电场分量可以表示为
文章图片
文章图片
Jones矩阵 能够保证二维列向量形状不变的运算有无穷多种,但最符合我们直觉的一定是 2 × 2矩阵。好在这种矩阵已经可以提供足够多的运算,从而满足我们描述偏振变化的需求。
文章图片
光在通过波片之后,会在不同方向产生差异性的相位延迟,对于与x轴角度为 Ψ,相位差为 Φ 的波片,其Jones矩阵为
文章图片
Jones矩阵的表示 为了对Jones矩阵所对应的偏振状态进行绘制,我们需要进一步理解Jones矩阵中每个值所对应的物理概念。如果将Jones矩阵写成虚数形式,可以表示为
文章图片
【Python光学仿真理解Jones矩阵学习】那么,对于任意Jones矩阵,我们可以很方便地绘制其对应的偏振图像。方便起见,我们只对1.064um光波在z轴方向传播5um这段距离进行采样,然后画出
def drawJones(J=[1,-2j]):J = np.array(J).reshape(2,1)# 设1.064um的光在z方向传播5um后,沿传播方向看去的振幅分布z = np.arange(0,5,0.01)k = 2*np.pi/1.064# 将J改写成x和y方向的振幅序列J = np.abs(J)*np.cos(k*z+np.angle(J))fig = plt.figure()ax1 = fig.add_subplot(121)ax1.plot(J[0],J[1])ax2 = fig.add_subplot(122,projection='3d')ax2.plot3D(z,J[0],J[1])plt.show()if __name__ == "__main__":drawJones()
其图像为
文章图片
现在光路中引入 λ / 4波片,令其旋转一周,观察一下线偏振光会有怎样的变化,设波片与x轴所成夹角为 Ψ,则其对应的Jones矩阵为
文章图片
代码为
def drawQuaterPlate():quater = lambda psi : np.array([[1-np.cos(2*psi),-1j*np.sin(2*psi)],[-1j*np.sin(2*psi),1+np.cos(2*psi)]])z = np.arange(0,5,0.01)k = 2*np.pi/1.064# 初始光波为x方向线偏振光J0 = np.array([1,0]).reshape(2,1)fig = plt.figure()ax = fig.add_subplot(111,xlim=(-2,2),ylim=(-2,2))ax.grid()line, = ax.plot([],[],lw=0.2)time_text = ax.text(0.1,0.9,'',transform=ax.transAxes)thetas = np.linspace(0,np.pi*2,80)def init():line.set_data([],[])time_text.set_text("")return line, time_textdef animate(theta):J = quater(theta)@J0#经过波片后的Jones矩阵arrJ = np.abs(J)*np.cos(k*z+np.angle(J)) #采样后的振幅line.set_data(arrJ[0],arrJ[1])time_text.set_text("angle:"+str(theta))return line, time_textani = animation.FuncAnimation(fig, animate, thetas,interval=100, init_func=init)ani.save('polor.gif',writer='imagemagick')plt.show()
最终得到偏振情况与波片角度的关系
可见,当角度合适的时候, λ / 4波片会将线偏振光变为圆偏振光。
以上就是Python光学仿真理解Jones矩阵学习的详细内容,更多关于Python光学仿真Jones矩阵的资料请关注脚本之家其它相关文章!
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)
- Python|Python 9.20