dx5
Contents
lens setup
sk16 = [1.617271 1.622861 1.627559];
f4 = [1.611644 1.620578 1.628484];
bk7 = [1.514322 1.51680 1.522376];
baf10 = [1.665791 1.670028 1.679987];
sf10 = [1.720848 1.728250 1.746581];
global cv th rn dn;
cv = [ 0 0 0 0 0 0];
th = [ 0 0 0 0 0 0];
rn = [ 1 sk16(2) 1 f4(2) 1 1];
dn = [ 0 sk16(3)-sk16(1) 0 f4(3)-f4(1) 0 0];
adjust powers (one step)
v=[1/50 -1/100]';
[A fz] = calculate_derivatives(@achromat1,v);
v = v - A\fz;
f = achromat1(v);
disp('power merit function');
disp(norm(f))
power merit function
3.0913e-013
do contours
n=128;
u1 = linspace(-8,8,n);
u2 = linspace(-8,8,n);
map = zeros(n,n);
map1 = map;
map2 = map;
for (r=1:n)
v(2)=u2(r);
for (c=1:n)
v(1)=u1(c);
f = achromat2(v);
map(r,c)=f'*f;
map1(r,c)=f(1);
map2(r,c)=f(2);
end
end
z = log10(map)+3;
show zero contours
pos = get(gcf,'Position');
pos(3)=480;
pos(4)=480;
set(gcf,'Position',pos);
contour(u1,u2,map2,[0 0],'b');
axis square;
hold on;
contour(u1,u2,map1,[0 0],'k');
hold off;
xlabel('shape of first element');
ylabel('shape of second element');
show mesh
mesh(u1,u2,z);
hold on
contour(u1,u2,z,12);
hold off
contour
contour(u1,u2,z,12,'LineWidth',1.25);
axis square
xlabel('shape of first element');
ylabel('shape of second element');
first design
[s damp sigma] = seek([0 5],@achromat2);
n sigma pmin %step
1 58.58
2 0.4959 1.1202 130.412
3 0.2736 0.5483 48.152
4 0.125 0.8399 34.014
5 0.0008295 1.0222 3.334
6 1.609e-006 1.0006 0.144
7 1.532e-013 1.0000 0.000
show_progress;
second design
subplot(1,1,1);
contour(u1,u2,z,12,'LineWidth',1.25);
axis square
xlabel('shape of first element');
ylabel('shape of second element');
[s damp sigma] = seek([5 -3],@achromat2);
n sigma pmin %step
1 107.3
2 0.8845 0.9017 58.614
3 0.5526 0.4659 19.910
4 0.3658 0.5554 11.314
5 0.1149 1.1016 8.153
6 0.0001168 1.0054 1.367
7 3.479e-008 1.0001 0.004
8 7.471e-014 1.0000 0.000
show_progress;
gradient search
subplot(1,1,1);
contour(u1,u2,z,12,'LineWidth',1.25);
axis square
xlabel('shape of first element');
ylabel('shape of second element');
v = [0 3]';
p(1,:)=v';
fprintf('%2s %10s %8s %8s\n','n','sigma','pmin','%step');
fz = achromat2(v);
fprintf('%2d %10.4g\n',1,norm(fz));
for k=2:10
[A fz] = calculate_derivatives(@achromat2,v);
g = -A'*fz/norm(A'*A);
[pmin fval]=fminbnd(@func,0,2,[],@achromat2,v,g);
fprintf('%2d %10.4g %8.4f %8.3f\n',k,fval,pmin,100.0*pmin*norm(g)/norm(v));
v = v + pmin*g;
p(k,:)=v';
end
hold on;
plot(p(:,1),p(:,2),'ko-','LineWidth',1.5);
hold off;
n sigma pmin %step
1 24.94
2 0.2009 0.9051 41.842
3 0.2007 2.0000 0.030
4 0.2005 2.0000 0.030
5 0.2003 2.0000 0.030
6 0.2001 2.0000 0.030
7 0.1999 2.0000 0.030
8 0.1997 2.0000 0.030
9 0.1995 2.0000 0.030
10 0.1993 2.0000 0.030
zoom in
axis([-0.784 -0.776 2.01 2.03]);