问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

菲涅耳方程式:折射穿透光强方程式的详解

创作时间:
作者:
@小白创作中心

菲涅耳方程式:折射穿透光强方程式的详解

引用
1
来源
1.
https://ithelp.ithome.com.tw/articles/10362603

今天,让我们跟随助教和ChatGPT一起了解一下菲涅耳光强方程式!(今天来轻松一下!)

菲涅耳方程式(Fresnel Equations)是用来描述当光线从一个介质传播到另一个介质时,在两个介质交界面上发生的反射和折射现象。这些方程式主要用来计算反射和折射光的振幅及强度,并取决于入射光的偏振方向。这些现象遵循斯涅耳定律(Snell's Law),同时也受Fresnel方程式的描述。

Fresnel方程式分为两种情况:

  1. 垂直偏振(S-偏振):电场振动方向垂直于入射面(即光线的入射平面)。在这种情况下,反射光和折射光的振幅与入射角和折射角有关,并由以下方程式给出:

  1. 平行偏振(P-偏振):电场振动方向平行于入射面。在这种情况下,反射和折射的振幅则由以下方程式描述:

其中,n1和n2分别是两个介质的折射率,θi是入射角,θt是折射角。

以下是将公式写成程序:

import numpy as np
import matplotlib.pyplot as plt
from numpy import sin, pi, cos, arcsin

# 因为后面会一直用不想重複寫np.故這邊先一次import
# 定义介质折射率
n1 = 1
n2 = 1.5
# 定义入射角,从0到pi/2之间切成200个等距点
theta_incident = np.linspace(0, pi/2, 200)
# 定义折射角,依照snell定律利用反正弦得出角度
theta_transmit = arcsin((n1/n2)*sin(theta_incident))
# 垂直偏振光的反射系数
r_TE = (n1*cos(theta_incident)-n2*cos(theta_transmit))/(n1*cos(theta_incident)+n2*cos(theta_transmit)) # 穿透系数垂直偏振
# 平行偏振光的反射系数
r_TM = (n2*cos(theta_incident)-n1*cos(theta_transmit))/(n2*cos(theta_incident)+n1*cos(theta_transmit)) # 反射系数垂直偏振
# 垂直偏振光的折射系数
t_TE = 2*n1*cos(theta_incident)/(n1*cos(theta_incident)+n2*cos(theta_transmit)) # 垂直偏振
# 平行偏振光的折射系数
t_TM = 2*n1*cos(theta_incident)/(n2*cos(theta_incident)+n1*cos(theta_transmit)) # 垂直偏振
# 绘制图表,乘以180/pi是将入射角从弧度转换为度数,alpha调整颜色透明度,--为虚线
plt.plot(theta_incident*180/pi, r_TE, 'b', label = 'r_TE')
plt.plot(theta_incident*180/pi, r_TM, 'r', label = 'r_TM')
plt.plot(theta_incident*180/pi, t_TE, 'b--', label = 't_TE', alpha = 0.5)
plt.plot(theta_incident*180/pi, t_TM, 'r--', label = 't_TM', alpha = 0.5)
# 在 y=0 的位置画了一条水平线
plt.axhline (y=0,color='r', linestyle=' ', linewidth=1)
plt.xlabel('incident degree')
plt.legend()
plt.show()

画出来的图表如下:

这个公式其实是与菲涅耳定律相关的光学现象中的能量守恒表达式。光波从一种介质入射到另一种介质时,反射率R和透射率T的和为1。公式中的E0i E0r和E0i E0t是反射和透射波的电场幅值相对于入射波电场幅值的比值。这些比值的平方分别表示反射率和透射率。

程序代码如下:

import numpy as np
import matplotlib.pyplot as plt
from numpy import sin, pi, cos, arcsin

# 因为后面会一直用不想重複寫np.故這邊先一次import
# 入射系数
n1 = 1
# 出射系数
n2 = 1.5
# 定义入射角,从0到pi/2之间切成200个等距点
theta_incident = np.linspace(0, pi/2, 200)
# 定义折射角,依照snell定律利用反正弦得出角度
theta_transmit = arcsin((n1/n2)*sin(theta_incident))
# 垂直偏振光的反射系数
r_TE = (n1*cos(theta_incident)-n2*cos(theta_transmit))/(n1*cos(theta_incident)+n2*cos(theta_transmit)) 
# 垂直偏振光的折射系数
t_TE = 2*n1*cos(theta_incident)/(n1*cos(theta_incident)+n2*cos(theta_transmit)) 
# 反射率
R = (r_TE)**2
# 透射率
T = ((n2*cos(theta_transmit))/(n1*cos(theta_incident)))*t_TE**2
# 制图
plt.plot(theta_incident*180/pi, R, 'cadetblue', label = 'Reflection')
plt.plot(theta_incident*180/pi, T, 'salmon', label = 'Transmission')
plt.xlim(0,90)
plt.ylim(0,1)
plt.legend()
plt.show()

画出的图如下:

可以看到反射和折射和为1以及两者的关係~代表著能量守恒!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号