Python光学仿真光的偏振编程理解学习
光的偏振
由于光波是横波,所以对于任意一个光波,其振幅方向与传播方向在一个固定的平面内。换言之,一束光波可以存在振幅方向不同的一群光波,对于其中一个光波而言,其振幅方向即为偏振方向。
可以画出其示意图
#偏振光演示import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D as axddef polarShow():z = np.arange(0,5,0.01)#传播方向,单位umdWave = 0.6328x1 = z*0y1 = np.cos(2*np.pi*z/dWave)#此光波偏振方向为yx2 = np.cos(2*np.pi*z/dWave)#此光波偏振方向为yy2 = z*0fig = plt.figure()ax = axd(fig)ax.plot3D(z,x1,y1)ax.plot3D(z,x2,y2)ax.plot3D(z,x1,y2)plt.show()
得到其示意图为
文章图片
我们生活中遇到的大部分光都是各种偏振方向的均匀混合,即并不是偏振光。上图所示的蓝色和橙色光波,其偏振方向单一,这种光叫做线偏振光。又因为这两束光处处保持等相位,则这两束光的合成仍旧为偏振光。
如果二者之间产生一点相位差,那么其合成将不再是线偏振光,下面将程序中插入一个相位
#两个存在相位差的线偏振光演示def polarShow(dWave = 0.6328,delta=0.5):z = np.arange(0,5,0.01)x1 = z*0y1 = np.cos(2*np.pi*z/dWave+delta)#此光波偏振方向为yx2 = np.cos(2*np.pi*z/dWave)#此光波偏振方向为xy2 = z*0x3 = x1+x2y3 = y1+y2fig = plt.figure()ax = axd(fig)ax.plot3D(z,x1,y1)ax.plot3D(z,x2,y2)ax.plot3D(z,x3,y3)ax.plot3D(z,x1,y2)plt.show()
调整视角之后,如下图所示,可见两束现偏振光合成之后,偏振方向则在光的不同传播位置处发生变化。由于沿着光的传播方向看去,其投影为一个椭圆,所以称此时的光为椭圆偏振光。
文章图片
调整相位差,然后画出光波沿传播方向上的投影
#偏振光演示def polarShow(dWave = 0.6328):z = np.arange(0,5,0.01)x = np.cos(2*np.pi*z/dWave) #x偏振光delta = [0,np.pi/6,np.pi/4,\np.pi/3,np.pi/2,2*np.pi/3,\3*np.pi/4,5*np.pi/6,np.pi]titles = ["0","30°","45°","60°","90°",\"120°","135°","150°","180°"]#fig = plt.figure()for i in range(9):ax =plt.subplot(331+i)#子图绘制,表示3×3的布局中的第(1+i)个图ax.set_title(titles[i])y = np.cos(2*np.pi*z/dWave+delta[i])#此光波偏振方向为yplt.plot(x,y)plt.xticks([])plt.yticks([])#去掉坐标轴plt.subplots_adjust(wspace=0.5,hspace=0.5)#调整子图间距plt.show()
于是就得到了这张著名的图片:
文章图片
光在空气中或者水中传播时,并不会改变其偏振状态,同时这两种介质对不同偏振方向的光具有相同的折射率。
【Python光学仿真光的偏振编程理解学习】以上就是Python光学仿真光的偏振编程理解学习的详细内容,更多关于Python光的偏振的资料请关注脚本之家其它相关文章!
推荐阅读
- 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