|
|
下面的程序是我根据
《Matlab辅助激光光学分析与应用》一书修改的高斯光束通过一个凸透镜和一个凹透镜的传输程序,为什么总是不能达到准直的效果呢?请大家指正!!!
%高斯光束传播变换
clear;
clc;
lambda=1.91e-3;
w0=0.2;
R0=1.0e30;
%Mf1=[1,0;-1/48.5843,1];
%Mf2=[1,0;1/14.5753,1];
Mf1=[1,0;-1/48,1]
Mf2=[1,0;1/14,1];
z=linspace(0,500,10000);
Mp2=1;%光束质量因子
q0=1/(1/R0-j*lambda*Mp2/pi/w0^2);
L1=200;%透镜的位置
L2=34;%凸透镜和凹透镜的距离
wz=zeros(size(z));
for gk=1:10000
if z(gk)<=L1
M=[1,z(gk);0,1];
q=(M(1,1)*q0+M(1,2))/(M(2,1)*q0+M(2,2));
wz(gk)=sqrt(-1/imag(1/q)/pi*lambda*Mp2);
elseif z(gk)>L1&&z(gk)<=(L1+L2)
M=[1,z(gk)-L1;0,1]*Mf1*[1,L1;0,1];
q=(M(1,1)*q0+M(1,2))/(M(2,1)*q0+M(2,2));
wz(gk)=sqrt(-1/imag(1/q)/pi*lambda*Mp2);
else z(gk)>=(L1+L2)
M=[1,L1;0,1]*Mf1*[1,L2;0,1]*Mf2*[1,z(gk)-L1-L2;0,1];
q=(M(1,1)*q0+M(1,2))/(M(2,1)*q0+M(2,2));
wz(gk)=sqrt(-1/imag(1/q)/pi*lambda*Mp2);
end
end
plot(z,wz,'b',z,-wz,'b') |
|