学习苏教授的(无须编程设计鳞甲反光杯视频教程+电子表格)帖子编程计算得到的反光杯
看了苏教授的教程,试着用matlab编了下程序,用来计算y、z、alpha和beta的值,根据程序得到的数据y、z、和alpha和教授得到的值一直,但是放大率却不太一样,整体偏小一些。自己看了半天也没看出个所以然来,所以把程序发上来,请大家指点指点。谢谢了!
z=[];
y=[];
A=[];
B=[];
C=[];
DeltaLphi=[];
Deltaz=[];
Deltay=[];
DeltaL=[];
alpha=[];
beta=[];
n=50;%每圈排列的鳞片数
f=10;%焦距
P=2*f;%求P值
for i=1:20
z(1)=10;%z轴初始值
y(i)=sqrt(2*P*z(i));
Deltaphi=2*pi/n;
DeltaLphi(i)=y(i).*Deltaphi;
A(i)=(1+(P./y(i)).^2*(1-Deltaphi(i).^2));%求系数A
B(i)=2*P*Deltaphi^2;%求系数B
C(i)=y(i).^2*Deltaphi^2;%求系数C
x=solve('A(i)*(x^2)-B(i)*x-C(i)=0');%求解z轴增量
x1=eval(x);
for ii=1:length(x1)%取出正解
if isreal(x1(ii))&&x1(ii)>0
Deltaz(i)=x1(ii);
end
end
alpha(i)=atan(P/y(i));%鳞片放置的斜率
z(i+1)=z(i)+Deltaz(i);%z轴定位
y(i+1)=sqrt(2*P.*z(i+1));%y轴定位
Deltay(i)=y(i+1)-y(i);%y方向的增量
DeltaL(i)=sqrt(Deltaz(i).^2+Deltay(i).^2);%用于求鳞片放大率
beta(i)=DeltaL(i)./DeltaLphi(i);%鳞片的放大率
end
alpha1=alpha*180/pi;
xlswrite('alpha1.xls',alpha1);
xlswrite('y.xls',y);
xlswrite('z.xls',z);
xlswrite('beta.xls',beta);

回复数 8 切换时间排序
需登录后查阅, 加载中......

目前注册实行审核/邀请制,欢迎灯友邀请好友注册,下载币奖励
邀请注册

为什么注册要审核

目前新版公测中,有任何BUG问题都可以联系我们
提交问题

或如无法回复,请访问此地址
提交问题