dx7
Contents
triplet setup
clear; global cv th rn dn; cv = [ 0 0 0 0 0 0 0 0]; %th = [ 0 0 0 0 0 0 0 0]; th = [ 0 2 0 1 0 3 0 0]; sk16 = [1.617271 1.622861 1.627559]; f4 = [1.611644 1.620578 1.628484]; bk7 = [1.514322 1.51680 1.522376]; rn = [ 1 sk16(2) 1 f4(2) 1 bk7(2) 1 1]; dn = [ 0 sk16(3)-sk16(1) 0 f4(3)-f4(1) 0 bk7(3)-bk7(1) 0 0]; sa = [0 6.5 6.5 6.5 0 6.5 6.5 6.5 0]; lp = find(rn>1); as = 5; v = [1/50 -2/50]';
trip1 code
cv(2:3)=lens_shape(v(1),1,rn(2)); % shape 1 (convex-plano) cv(4:5)=lens_shape(v(2),0,rn(4)); % shape 2 (equi-concave) cv(6)=0; yap = 50/8; uco = tan(2.0*pi/180); scl = yap^2/2; ya = parax([yap 0],cv,th,rn); usolve = -0.125; yn=ya(7,1); % paraxial height solve for image distance th(7) = -yn/usolve; ya(8,1) = 0; % paraxial angle solve for power if (abs(yn)>1e-6) cv(7)= -(rn(7)*usolve-rn(6)*ya(6,2))/((rn(7)-rn(6))*yn); end ya(7,2)=usolve; show_lens drawsys
system prescription sn rd th rn 0 0.00000 0.00000 1.00000 1 31.14305 2.00000 1.62286 2 0.00000 0.00000 1.00000 3 -31.02890 1.00000 1.62058 as 31.02890 0.00000 1.00000 5 0.00000 3.00000 1.51680 6 -13.41606 50.63215 1.00000 7 0.00000 0.00000 1.00000 paraxial raytrace sn ya ua yc uc clap 0 6.25000 0.00000 -0.06678 0.03492 6.31678 1 6.25000 -0.07702 -0.06678 0.02234 6.31678 2 6.09595 -0.12500 -0.02210 0.03626 6.11805 3 6.09595 -0.00190 -0.02210 0.02210 6.11805 4 6.09405 0.11880 0.00000 0.03581 6.09405 5 6.09405 0.07832 0.00000 0.02361 6.09405 6 6.32902 -0.12500 0.07084 0.03309 6.39985 7 0.00000 -0.12500 1.74604 0.03309 1.74604 W040 W131 W222 W220 W311 W220P 57.99 -13.86 0.31 0.42 0.04 -0.25 Chromatic Aberrations axial lateral -3.10 0.33

th(3)=5; th(5)=7; trip1(v); show_lens drawsys
system prescription sn rd th rn 0 0.00000 0.00000 1.00000 1 31.14305 2.00000 1.62286 2 0.00000 5.00000 1.00000 3 -31.02890 1.00000 1.62058 as 31.02890 7.00000 1.00000 5 0.00000 3.00000 1.51680 6 -14.89584 50.63215 1.00000 7 0.00000 0.00000 1.00000 paraxial raytrace sn ya ua yc uc clap 0 6.25000 0.00000 -0.27680 0.03492 6.52680 1 6.25000 -0.07702 -0.27680 0.02493 6.52680 2 6.09595 -0.12500 -0.22694 0.04046 6.32290 3 5.47095 -0.00961 -0.02466 0.02466 5.49561 4 5.46134 0.09365 0.00000 0.03996 5.46134 5 6.11686 0.06174 0.27975 0.02635 6.39660 6 6.30207 -0.12500 0.35879 0.02752 6.66086 7 -0.02694 -0.12500 1.75197 0.02752 1.77891 W040 W131 W222 W220 W311 W220P 50.46 0.55 -0.40 0.01 0.07 -0.21 Chromatic Aberrations axial lateral 1.47 1.24

[f v]=trip3; %[xo vout hp]=cycle(v,@trip3); %[A fz] = calculate_derivatives(@trip3,xo); [A fz] = calculate_derivatives(@trip3,v); [U W V] = svd(A,0); d = diag(W); n = length(d); sing = 1e-8; semilogy(1:n,d,'ko',0,1); %semilogy(1:n,d,'ko',[0 n],sing*max(d)*[1 1],'b--'); ylabel('eigenvalues'); fprintf('eigenvalues: min %g max %g\n',min(d),max(d));
eigenvalues: min 0.00985783 max 34518

Va = abs(V); totals = sum(Va); size(Va) size(totals) Vn = Va./(ones(size(totals))'*totals); % variable names vname = cellstr(['cv2'; 'cv3'; 'cv4'; 'cv5'; 'cv6'; 'cv7'; 'th3'; 'th5']); for k=1:8 str = char(vname(k)); fprintf('%3s %6.1f %6.1f %6.1f %6.1f %6.1f %6.1f %6.1f %6.1f\n',str,100*Vn(:,k)); end imwrite(imresize(Vn,16,'nearest'),'html/dx7.jpg');
ans = 8 8 ans = 1 8 cv2 15.5 15.3 14.6 14.9 18.8 21.0 0.0 0.0 cv3 29.3 26.7 0.1 1.4 1.5 40.8 0.1 0.1 cv4 21.7 11.8 36.2 17.7 3.7 8.6 0.0 0.3 cv5 0.5 17.0 21.1 33.4 17.9 9.6 0.2 0.2 cv6 14.8 10.2 7.2 13.1 36.0 18.2 0.1 0.4 cv7 25.0 29.6 13.9 18.7 10.2 2.4 0.1 0.2 th3 0.2 0.8 0.2 0.5 0.6 0.2 1.9 95.6 th5 0.0 0.0 0.2 0.3 0.3 0.1 97.1 1.9
This image shows the above array
optimize
[xo vout hp] = cycle(v,@trip3);
1 41.56 0.24 44.2 8 2 32.14 0.716 75.7 8 3 3.006 0.683 27.1 8 4 1.818 0.504 6.51 8 5 0.674 0.933 5.37 8 6 0.0003815 1 0.29 8 7 2.654e-008 1 0.000552 8 8 1.158e-012 1 3.77e-008 8
show_lens
system prescription sn rd th rn 0 0.00000 0.00000 1.00000 1 18.74934 2.00000 1.62286 2 -200.66262 7.38428 1.00000 3 -13.83423 1.00000 1.62058 as 10.58907 4.35964 1.00000 5 36.40854 3.00000 1.51680 6 -10.61340 44.39750 1.00000 7 0.00000 0.00000 1.00000 paraxial raytrace sn ya ua yc uc clap 0 6.25000 0.00000 -0.47878 0.03492 6.72878 1 6.25000 -0.12794 -0.47878 0.03132 6.72878 2 5.99412 -0.22623 -0.41615 0.05212 6.41027 3 4.32355 -0.01992 -0.03129 0.03129 4.35484 4 4.30363 0.21993 0.00000 0.05071 4.30363 5 5.26244 0.09575 0.22110 0.03137 5.48354 6 5.54969 -0.12500 0.31519 0.03223 5.86488 7 0.00000 -0.12500 1.74604 0.03223 1.74604 W040 W131 W222 W220 W311 W220P -0.00 -0.00 0.00 0.00 -0.00 0.00 Chromatic Aberrations axial lateral -0.00 -0.00
optimization progress plot
sigma = hp(:,1); damp = hp(:,2); n = length(sigma); k = (1:n)-1; subplot(2,1,1); if n<20 %plot(k,log10(sigma),'ko-','LineWidth',2); semilogy(k,sigma,'ko-','LineWidth',2); else semilogy(k,sigma,'k','LineWidth',2); end grid; xlabel('iteration'); ylabel('merit value'); subplot(2,1,2); if n<20 plot(k(2:n),damp(2:n),'ko-',0,1.1,'LineWidth',2); else plot(k(2:n),damp(2:n),'k',0,1.1,'LineWidth',2); end grid; xlabel('iteration'); ylabel('damping');

final design
subplot(1,1,1) drawsys

show steps
sz = size(vout); disp(sz) for k=1:8 str = sprintf('iteration %d',k); v = vout(k,:); trip3(v); subplot(2,4,k); drawsys; axis([0 25 -8 8]); title(str); end
9 8
