通過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()

於是就得到了這張著名的圖片:

在這裏插入圖片描述
光在空氣中或者水中傳播時,並不會改變其偏振狀態,同時這兩種介質對不同偏振方向的光具有相同的折射率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章