Оптика: Сдвиг фазы сдвига для обоих TE и TM
Я пытаюсь построить фазовый сдвиг перпендикулярных и параллельных волн с переменным углом падения от 0 до 180 градусов. Волны распространяются от показателя преломления 1,33 до среднего с показателем преломления 1,5.
я использовал следующее уравнение: теория с уравнениями <- стр. 18
я использовал следующий код:
def Phase(theta):
n=1.5/1.33
Shift=np.sqrt(np.sin(theta*np.pi/180)**2-n**2)
Shift=Shift/np.cos(theta*np.pi/180)
Shift=2*np.degrees(np.arctan(Shift))
return Shift
print(Phase(x))
x=np.linspace(0,180,30)
Проблема в том, что я получаю [ nan nan nan nan nan nan nan nan nan nan]
как возвращение.
2 ответа
Вы используете уравнение для полного внутреннего отражения (TIR), которое действует для theta > theta_critical
, Вам нужно будет ограничить ваши входные углы этим диапазоном. Кроме того, эти уравнения требуют n <1, где n определяется как отношение передаваемой среды к падающей среде. Для МДП вы переходите от более высокого индекса к более низкому, поэтому n = n_2/n_1 = 1.33/1.5
, Наконец, углы падения определяются относительно нормали поверхности, поэтому они должны находиться в диапазоне 0 <= theta <= 90°.
Если ваш код такой, как показано, вы используете x перед присваиванием.
Попробуй это:
def Phase(theta):
n=1.5/1.33
Shift=np.sqrt(np.sin(theta*np.pi/180)**2-n**2)
Shift=Shift/np.cos(theta*np.pi/180)
Shift=2*np.degrees(np.arctan(Shift))
return Shift
x=np.linspace(0,180,30)
print(Phase(x))