MATLAB利用菲涅尔公式仿真光的折射

该文使用MATLAB计算和可视化了光从空气到石英玻璃以及从石英玻璃到空气的反射率和透射率。内容涉及反射系数rp和rs、透射系数tp和ts的计算,展示了全反射现象、布鲁斯特角以及相位变化。在光密介质到光疏介质的转换中,观察到全反射和反射率的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从空气进入石英玻璃,计算振幅反射率、透射率和对应的绝对值:

clear;
close all;

n1 = 1;   %空气折射率
n2 = 1.45;%平板玻璃折射率
theta = 0:0.1:90;%角度从0到90
a = theta*pi/180;%角度转化为弧度
rp = (n2*cos(a)-n1*sqrt(1-(n1/n2)^2*(sin(a)).^2))./(n2*cos(a)+n1*sqrt(1-(n1/n2)^2*(sin(a)).^2));
tp = (2*n1*cos(a))./(n2*cos(a)+n1*sqrt(1-(n1/n2)^2*(sin(a)).^2));
rs = (n1*cos(a)-n2*sqrt(1-(n1/n2)^2*(sin(a)).^2))./(n1*cos(a)+n2*sqrt(1-(n1/n2)^2*(sin(a)).^2));
ts = (2*n1*cos(a))./(n1*cos(a)+n2*sqrt(1-(n1/n2)^2*(sin(a)).^2));

figure(1);
subplot(1,2,1);
plot(theta,rp,'-',theta,rs,'--',theta,abs(rp),':' ,theta,abs(rs),'-.','linewidth',2);
legend('r_p','r_s','|r_p|','|r_s|');
xlabel('\theta_i');
ylabel('Amplitude');
title(['n_1=',num2str(n1),',n_2=',num2str(n2)]);
axis([0 90 -1 1]);
grid on;

subplot(1,2,2);
plot(theta,tp,'-',theta,ts,'--',theta,abs(tp),':' ,theta,abs(ts),'-.','linewidth',2);
legend('t_p','t_s','|t_p|','|t_s|');
xlabel('\theta_i');
ylabel('Amplitude');
title(['n_1=',num2str(n1),',n_2=',num2str(n2)]);
axis([0 90 0 1]);
grid on;

结果如下:

 可以看出:
1、首先,当入射角等于0时,有反射波也有透射波,这个时候并不是完全进入折射率高的介质内;
2、当入射角等于90时,透射波为0,能量完全反射。
3、当角度增大时,投射的两个偏振都减小,反射的s偏振逐渐增大,p偏振先减小再增大。
4、t始终大于0,折射光的相位和入射光始终是一致的;
5、rs始终小于0,表明s偏振光在反射面上发生了π相位变化;
6、rp前期相位变化为0,后期相位相差π。

反之,从光密介质进入光疏介质,全反射存在

%从光密到光疏

clear;
close all;

n1 = 1.45;   %空气折射率
n2 = 1;%平板玻璃折射率
theta = 0:0.1:90;%角度从0到90
a = theta*pi/180;%角度转化为弧度
rp = (n2*cos(a)-n1*sqrt(1-(n1/n2)^2*(sin(a)).^2))./(n2*cos(a)+n1*sqrt(1-(n1/n2)^2*(sin(a)).^2));
tp = (2*n1*cos(a))./(n2*cos(a)+n1*sqrt(1-(n1/n2)^2*(sin(a)).^2));
rs = (n1*cos(a)-n2*sqrt(1-(n1/n2)^2*(sin(a)).^2))./(n1*cos(a)+n2*sqrt(1-(n1/n2)^2*(sin(a)).^2));
ts = (2*n1*cos(a))./(n1*cos(a)+n2*sqrt(1-(n1/n2)^2*(sin(a)).^2));

figure(1);
subplot(1,2,1);
plot(theta,rp,'-',theta,rs,'--',theta,abs(rp),':' ,theta,abs(rs),'-.','linewidth',2);
legend('r_p','r_s','|r_p|','|r_s|');
xlabel('\theta_i');
ylabel('Amplitude');
title(['n_1=',num2str(n1),',n_2=',num2str(n2)]);
axis([0 90 -1 1.2]);
grid on;

subplot(1,2,2);
plot(theta,tp,'-',theta,ts,'--',theta,abs(tp),':' ,theta,abs(ts),'-.','linewidth',2);
legend('t_p','t_s','|t_p|','|t_s|');
xlabel('\theta_i');
ylabel('Amplitude');
title(['n_1=',num2str(n1),',n_2=',num2str(n2)]);
axis([0 90 0 3]);
grid on;
可以看出:
1、对于rp仍然存在布鲁斯特角;
2、光密介质进入光疏介质存在全反射现象,rp和rs的绝对值为0;
3、之所以出现如此大的差异,是因为当角度超过全反射角时,rs、rp等为复数。matlab中plot函数在绘图时会忽视复数的虚部。

【例1.4】
对于光密到光疏介质,我们可以计算能流密度来表征:
%从光密到光疏

clear;
close all;

n1 = 1.45;   %空气折射率
n2 = 1;%平板玻璃折射率
theta = 0:0.1:90;%角度从0到90
a = theta*pi/180;%角度转化为弧度
rp = (n2*cos(a)-n1*sqrt(1-(n1/n2)^2*(sin(a)).^2))./(n2*cos(a)+n1*sqrt(1-(n1/n2)^2*(sin(a)).^2));
tp = (2*n1*cos(a))./(n2*cos(a)+n1*sqrt(1-(n1/n2)^2*(sin(a)).^2));
rs = (n1*cos(a)-n2*sqrt(1-(n1/n2)^2*(sin(a)).^2))./(n1*cos(a)+n2*sqrt(1-(n1/n2)^2*(sin(a)).^2));
ts = (2*n1*cos(a))./(n1*cos(a)+n2*sqrt(1-(n1/n2)^2*(sin(a)).^2));

Rp = abs(rp).^2;
Rs = abs(rs).^2;
Rn = (Rp+Rs)/2;

Tp = n2*sqrt(1-(n1/n2)^2*(sin(a)).^2)./(n1*cos(a)).*abs(tp).^2;
Ts = n2*sqrt(1-(n1/n2)^2*(sin(a)).^2)./(n1*cos(a)).*abs(ts).^2;
Tn = (Tp+Ts)/2;

subplot(1,2,1);
plot(theta,Rp,'-',theta,Rs,'-.',theta,Rn,'--','linewidth',2);
legend('R_p','R_s','R_n');
xlabel('\theta_i');
ylabel('Amplitude');
title(['n_1=',num2str(n1),',n_2=',num2str(n2)]);
axis([0 90 0 1]);
grid on;

subplot(1,2,2);
plot(theta,Tp,'-',theta,Ts,'-.',theta,Tn,'--','linewidth',2);
legend('T_p','T_s','T_n');
xlabel('\theta_i');
ylabel('Amplitude');
title(['n_1=',num2str(n1),',n_2=',num2str(n2)]);
axis([0 90 0 1]);
grid on;

结果如下:

 可以看出:
1、对于rp仍然存在布鲁斯特角;
2、光密介质进入光疏介质存在全反射现象,rp和rs的绝对值为0;
3、之所以出现如此大的差异,是因为当角度超过全反射角时,rs、rp等为复数。matlab中plot函数在绘图时会忽视复数的虚部。

来源《高等光学仿真——光波导、激光》

MATLAB模拟绘制 彩虹形成时 光线 入射到水珠折射 -反射 -再折射的现象 目录 MATLAB模拟绘制彩虹形成时 光线入射到水珠折射 -反射 -再折射的现象 1 前言 3 光的 知识 4 光的反射定律 4 反射定律 4 特殊情况 4 光的折射 5 基本定义 5 折射定律 5 折射率 6 彩虹的形成 7 形成原理 7 为什么彩虹是弯的? 10 Baggins 572645517@qq.com MATLAB绘制光路图思路绘制光路图思路 ................................................................................................................................................................ 13 绘制基础模拟平面 绘制基础模拟平面............................................................................................................................................................................ 13 绘制初始垂直光线 绘制初始垂直光线............................................................................................................................................................................ 14 改变角度循环刷新绘图 改变角度循环刷新绘图............................................................................................................................................................ 15 完整代码 完整代码............................................................................................................................................................................................................................ 18 运行效果 运行效果............................................................................................................................................................................................................ 18 全部代码 全部代码............................................................................................................................................................................................................ 18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值