Python光学仿真:光的偏振编程理解学习
本文通过Python编程演示光的偏振现象。文章解释了横波的振幅方向与传播方向关系,展示了线偏振光与椭圆偏振光的合成原理。通过调整相位差,程序直观呈现了偏振方向随传播位置的变化,并分析了光在空气或水中传播时偏振状态的保持特性。
光的偏振
由于光波属于横波,任意光波的振幅方向与传播方向均位于同一固定平面内。这意味着一束光波可由振幅方向各异的光波组成,其中单个光波的振幅方向即定义为该光的偏振方向。
可以绘制其示意图
#偏振光演示
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D as axd
def polarShow():
z = np.arange(0,5,0.01) #传播方向,单位um
dWave = 0.6328
x1 = z*0
y1 = np.cos(2*np.pi*z/dWave)#此光波偏振方向为y
x2 = np.cos(2*np.pi*z/dWave)#此光波偏振方向为y
y2 = z*0
fig = 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*0
y1 = np.cos(2*np.pi*z/dWave+delta)#此光波偏振方向为y
x2 = np.cos(2*np.pi*z/dWave)#此光波偏振方向为x
y2 = z*0
x3 = x1+x2
y3 = y1+y2
fig = 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])#此光波偏振方向为y
plt.plot(x,y)
plt.xticks([])
plt.yticks([]) #去掉坐标轴
plt.subplots_adjust(wspace=0.5,hspace=0.5)#调整子图间距
plt.show()
于是得到了这张著名的图片:

光在空气或水中传播时,不会改变其偏振状态,且这两种介质对不同偏振方向的光具有相同的折射率。
以上就是Python光学仿真光的偏振编程理解学习的详细内容,更多关于Python光的偏振的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













