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]);