Оптика: Сдвиг фазы сдвига для обоих 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))
Другие вопросы по тегам