ApplendseriesK得到的结果有很多,应该怎样定义输出参数?
function ApplendseriesK(C1,Pinf,Winf,delta)
clear all
close all
%-----------------------冕玻璃系列--------------------------
glassK(1)=struct('name','K3','nd',1.50463,'vd',64.72);
glassK(2)=struct('name','K7','nd',1.51478,'vd',60.63);
glassK(3)=struct('name','K9','nd',1.51637,'vd',64.07);
glassK(4)=struct('name','K10','nd',1.51818,'vd',58.95);
%------------------------钡冕玻璃----------------------------
glassK(5)=struct('name','BaK1','nd',1.53028,'vd',60.47);
glassK(6)=struct('name','BaK2','nd',1.53998,'vd',59.67);
glassK(7)=struct('name','BaK3','nd',1.54678,'vd',62.78);
glassK(8)=struct('name','BaK4','nd',1.55248,'vd',63.36);
glassK(9)=struct('name','BaK5','nd',1.56069,'vd',58.34);
glassK(10)=struct('name','BaK7','nd',1.56889,'vd',56.05);
%------------------------重冕玻璃----------------------------
glassK(11)=struct('name','ZK1','nd',1.56888,'vd',62.93);
glassK(12)=struct('name','ZK2','nd',1.58313,'vd',59.32);
glassK(13)=struct('name','ZK3','nd',1.58919,'vd',61.25);
glassK(14)=struct('name','ZK5','nd',1.61120,'vd',55.82);
glassK(15)=struct('name','ZK6','nd',1.61269,'vd',58.35);
glassK(16)=struct('name','ZK7','nd',1.61309,'vd',60.58);
glassK(17)=struct('name','ZK10','nd',1.62210,'vd',56.71);
glassK(18)=struct('name','ZK11','nd',1.63854,'vd',55.49);
%-----------------------火石玻璃系列--------------------------
%-------------------------火石玻璃----------------------------
glassF(1)=struct('name','F1','nd',1.60324,'vd',37.94);
glassF(2)=struct('name','F2','nd',1.61295,'vd',36.95);
glassF(3)=struct('name','F3','nd',1.61655,'vd',36.61);
glassF(4)=struct('name','F4','nd',1.62005,'vd',36.35);
glassF(5)=struct('name','F5','nd',1.62435,'vd',35.92);
glassF(6)=struct('name','F6','nd',1.62495,'vd',35.57);
glassF(7)=struct('name','F7','nd',1.63636,'vd',35.35);
glassF(8)=struct('name','F12','nd',1.62364,'vd',36.81);
glassF(9)=struct('name','F13','nd',1.62588,'vd',35.70);
%-------------------------钡火石玻璃---------------------------
glassF(10)=struct('name','BaF1','nd',1.54809,'vd',53.95);
glassF(11)=struct('name','BaF2','nd',1.56970,'vd',49.45);
glassF(12)=struct('name','BaF3','nd',1.57960,'vd',53.87);
glassF(13)=struct('name','BaF4','nd',1.58271,'vd',46.47);
glassF(14)=struct('name','BaF5','nd',1.60562,'vd',43.93);
glassF(15)=struct('name','BaF6','nd',1.60772,'vd',46.11);
glassF(16)=struct('name','BaF7','nd',1.61413,'vd',40.03);
glassF(17)=struct('name','BaF8','nd',1.62604,'vd',39.10);
%--------------------------------------------------------------
P0=Pinf-0.85*(Winf-0.1)^2;
m=0;
for i=1:length(glassK)
for j=1:length(glassF)
n1=glassK(i).nd; n2=glassF(j).nd;
phi1=(C1-1/glassF(j).vd)/(1/glassK(i).vd-1/glassF(j).vd);
a=1+2*phi1/n1+2*(1-phi1)/n2;
b=3*phi1^2/(n1-1)-3*(1-phi1)^2/(n2-1)-2*(1-phi1);
c=n1*phi1^3/(n1-1)^2+n2*(1-phi1)^3/(n2-1)^2+n2*(1-phi1)^2/(n2-1);
P1=c-b^2/(4*a);
if abs(P0-P1)<=delta
m=m+1;
disp(glassK(i));
disp(glassF(j));
Q0=(-1)*b/(2*a);
W0=(1-phi1)/3-(3-a)*Q0/6;
Q1=Q0+sqrt((Pinf-P0)/2.35);Q2=Q0-sqrt((Pinf-P0)/2.35);Q3=Q0-(Winf-W0)/1.67;
if abs(Q1-Q3)>abs(Q2-Q3)
Q=Q2;
else
Q=Q1;
end
Q=(Q+Q3)/2;
r2=1/(phi1+Q);
r1=1/(phi1/(n1-1)+1/r2);
phi2=1-phi1;
r3=1/(1/r2-phi2/(n2-1));
u(m,:)=[phi1,phi2,Q0,r1,r2,r3];
end
end
end
disp(u);