Я пытаюсь научиться простому моделированию полей E, включая поляризацию. Моя установка выглядит следующим образом (представьте, что волна проходит вдоль (x + y), а затем отражается на себе, образуя стоячую волну)
x = linspace(-pi,pi,21)
y = linspace(-pi,pi,21)
X,Y = np.meshgrid(x,y)
xhat = array((1,0))
yhat = array((0,1))
k1 = 1/np.sqrt(2)*(xhat+yhat)
k2 = -1/np.sqrt(2)*(xhat+yhat)
E1 = exp(-1j*(X*np.dot(k1,xhat)+Y*np.dot(k1,yhat)))
E2 = exp(-1j*(X*np.dot(k2,xhat)+Y*np.dot(k2,yhat)))
ETot = E1+E2
# Itot = np.dot(Etot,Etot) This is desired
Мой вопрос заключается в том, как сделать каждую точку сетки трехмерной вектор. Если я говорю, что E1
поляризован по x, то он имеет компонент только вдоль array((1,0,0))
, а E2
- вдоль array((0,1,0))
, тогда я хочу, чтобы мой ETot
был массивом, array((E1, E2, 0))
.
Я не могу точно понять, как это сделать (и учесть произвольные углы, т. Е. Вдоль массива ((cos (alpha), sin (alpha), 0))