三棱镜的出射角、偏向角与入射角之间关系的matlab程序
ltg.m
%不同折射率的三棱镜的出射角和偏向角
clear,a=pi/3;%清除变量,三棱镜的顶角
i=(-30:0.1:90)*pi/180;n=1.1:0.2:1.9;%入射角弧度向量,三棱镜的折射率向量
[I,N]=meshgrid(i,n);%入射角和折射率矩阵
R=asin(sqrt(N.^2-sin(I).^2)*sin(a)-cos(a)*sin(I));%出射角
R(imag(R)~=0)=NaN;%复数改为非数
ii=i*180/pi;RR=R*180/pi;%化为度数
figure,plot(ii,RR(1,:),ii,RR(2,:),'--',ii,RR(3,:),'-.',...
ii,RR(4,:),':',ii,RR(5,:),'.','LineWidth',2)%创建图形窗口,画曲线
legend([repmat('\itn\rm=',length(n),1),num2str(n')])%图例
grid,fs=16;%加网格,字体大小
s=['(\it\alpha\rm=',num2str(a*180/pi),'\circ)'];%顶角字符串
title(['三棱镜的出射角',s],'FontSize',fs)%显示标题
xlabel('\iti\rm/\circ','FontSize',fs)%显示横坐标
ylabel('\itr\rm/\circ','FontSize',fs)%显示纵坐标
ic=asin(sqrt(n.^2-1)*sin(a)-cos(a));icc=ic*180/pi;%临界入射角,化为度数
o=90*ones(size(n));%全90度向量
hold on,plot(icc,o,'*',o,icc,'*')%保持属性,画点
text(icc,o,num2str(icc',4),'FontSize',fs)%显示临界入射角
text(o,icc,num2str(icc',4),'FontSize',fs)%显示临界入射角
plot([0,90],[0,90],'-.','LineWidth',2)%画对称轴
D=I+R-a;DD=D*180/pi;%偏向角矩阵,化为度数
figure,plot(ii,DD(1,:),ii,DD(2,:),'--',ii,DD(3,:),'-.',...
ii,DD(4,:),':',ii,DD(5,:),'.','LineWidth',2)%创建图形窗口,画曲线
legend([repmat('\itn\rm=',length(n),1),num2str(n')])%图例
title(['三棱镜的偏向角',s],'FontSize',fs)%显示标题
xlabel('\iti\rm/\circ','FontSize',fs)%显示横坐标
ylabel('\it\delta\rm/\circ','FontSize',fs),grid%显示纵坐标,加网格
dc=ic+pi/2-a;dcc=dc*180/pi;%临界偏向角
hold on,stem(icc,dcc,'-.')%保持属性,画临界杆线
d=repmat(',',length(n),1);%逗号字符串
text(icc,dcc,[num2str(icc',4),d,num2str(dcc',4)],...
'FontSize',fs-3)%显示临界入射角
im=asin(n*sin(a/2));dm=2*im-a;%最小偏向角的入射角,最小偏向角
imm=im*180/pi;dmm=dm*180/pi;%弧度化为度数
stem(imm,dmm,'--')%画最小偏向角杆线
plot([a-pi/2,pi/2]*180/pi,[0,pi-a]*180/pi,'-.','LineWidth',1)%画临界分布直线
plot([a/2,pi/2]*180/pi,[0,pi-a]*180/pi,'--','LineWidth',1)%画极小值分布直线
axis tight%曲线贴框