代码分别讨论了 玻璃到空气、空气到玻璃的两种情况。为了满足精度需要,还在关键地方使用了变步
clc;clear;close all;
%入射 th1 折射 th2
syms rs ts rp tp
th1 = 0:0.001:pi/2;
n1 = 1;n2 = 1.5; n = n1/n2;
% 当从空气中入射玻璃时
sinth2 = sin(th1).*n;
costh2 = sqrt(1-sinth2.^2);
ts = 2*n1.*cos(th1)./(n1.*cos(th1)+n2.*costh2);
rs = ts-1;
figure;
plot(th1,ts, 'LineWidth',2);hold on;
plot(th1,rs, 'LineWidth',2);hold on;
tp = 2*n1.*cos(th1)./(n2.*cos(th1)+n1.*costh2);
rp = (n2/n1).*tp-1;
plot(th1,tp, 'LineWidth',2);hold on;
plot(th1,rp, 'LineWidth',2);hold on;
% 辅助线绘制
legend('ts','rs','tp','rp');legend('boxoff');
title('从空气中入射玻璃');
x = [0,1.6];
y = [rp(end),rp(end)];
plot(x,y,'HandleVisibility','off','Color','k','LineStyle','--');hold on;
x = [0,1.6];
y = [tp(end),tp(end)];
plot(x,y,'HandleVisibility','o