Я пытаюсь численно распространить данное (электрическое) поле, используя метод углового спектра. Для этого я следую «Принципам и применениям фурье-оптики» (Роберт К. Тайсон), глава 3, страница 2
![enter image description here](https://i.stack.imgur.com/O3OTI.png)
Я пытался воссоздатьматематика, использующая следующий код
import numpy as np
import imageio
U = imageio.imread("ap.png")[:,:, 0] # load circular aperture
_lambda = 800e-9
def propagate2(self,z):
A = np.fft.fft2(U, norm="ortho") # 2D FFT
alpha = np.fft.fftfreq(U.shape[0])*_lambda # direction cosine in x direction
beta = np.fft.fftfreq(U.shape[1])*_lambda # direction cosine in x direction
gamma = np.zeros([alpha.shape[0], beta.shape[0]])
k = 2*np.pi/_lambda # wavevector
for i,j in itertools.product(range(alpha.shape[0]), range(beta.shape[0])): # determine phase value for each (i,j)
if alpha[i]**2+beta[j]**2 < 1:
gamma[i,j] = np.sqrt(1-alpha[i]**2-beta[j]**2)
else:
gamma[i,j] = 1j*np.sqrt(np.abs(1-alpha[i]**2-beta[j]**2))
phi = np.exp(1j*k*z*gamma)
field = np.fft.ifft2(A*phi, norm="ortho") # 2D IFFT
return field
Этот код должен создавать обычную дифракционную картину с двумя щелями, однако (как будет показано ниже) не будет производить и дифракцию вообще.
![Code output](https://i.stack.imgur.com/rUpHY.png)
Я вполне уверен, что есть какие-то проблемы с моими значениями альфа и бета, однако я не могу найти это. Любая помощь высоко ценится.
ap.png:
![ap.png](https://i.stack.imgur.com/mh2jt.png)