干涉圖像是一種用于研究光干涉現象的圖像。它可以顯示出不同物體的光波干涉后的干涉條紋,從而提供有關物體表面形狀和表面高低差異的信息。本文將介紹如何使用Python畫干涉圖像。
# 導入必要的庫 import numpy as np import matplotlib.pyplot as plt # 創建網格 x = np.linspace(-1, 1, 100) y = np.linspace(-1, 1, 100) X, Y = np.meshgrid(x, y) # 定義波形函數 def wave(x, y, A, k, phi): return A * np.cos(k*x + phi) * np.cos(k*y) # 定義參數 A1, A2 = 1, 1 k1, k2 = 2*np.pi, 2*np.pi phi1, phi2 = 0, np.pi/2 # 計算波形函數并相加 Z = wave(X, Y, A1, k1, phi1) + wave(X, Y, A2, k2, phi2) # 創建圖像 fig, ax = plt.subplots() ax.imshow(Z, cmap="gray") # 設置標題和標簽 ax.set_title("Interference Pattern") ax.set_xlabel("X") ax.set_ylabel("Y") # 顯示圖像 plt.show()
在代碼中,我們首先導入了必要的庫。然后創建了x和y的網格,用于計算波形函數。接著我們定義了波形函數和三個參數,分別表示振幅、波數和相位。我們使用np.cos函數計算出干涉條紋的形狀,并將兩個波形函數相加。最后使用imshow函數將干涉圖像顯示出來。
如果需要畫出三維干涉圖像,可以使用mpl_toolkits.mplot3d庫中的Axes3D函數。
# 導入必要的庫 from mpl_toolkits.mplot3d import Axes3D # 創建三維網格 x = np.linspace(-1, 1, 100) y = np.linspace(-1, 1, 100) X, Y = np.meshgrid(x, y) # 計算波形函數并相加 Z = wave(X, Y, A1, k1, phi1) + wave(X, Y, A2, k2, phi2) # 創建3D圖像 fig = plt.figure() ax = fig.add_subplot(111, projection="3d") ax.plot_surface(X, Y, Z, cmap="rainbow") # 設置標題和標簽 ax.set_title("Interference Pattern") ax.set_xlabel("X") ax.set_ylabel("Y") ax.set_zlabel("Z") # 顯示圖像 plt.show()
在代碼中,我們首先導入了Axes3D函數。然后創建了x和y的三維網格,用于計算波形函數。接著我們計算出干涉條紋的形狀,并創建了3D圖像。最后使用plot_surface函數將干涉圖像顯示出來。