Landscape Lens (Design Example 3)

dx4.m

land_setup;
load land;
show_contour2;
seek([0.25 -10],@land);

Output

contour(u1,u2,map2,[0 0],'b');
axis square;
hold on;
contour(u1,u2,map1,[0 0],'k');
hold off;
xlabel('curvature of first surface');
ylabel('distance to stop');

Landscape lens defect function (land.m)

function f = land(v);
global cv th rn;
cv(2)=v(1); % first surface curvature
th(3)=v(2); % distance to stop
yap = 5.0;
uco = tan(10*pi/180);
scl = yap^2/2;
ya = parax([yap 0],cv,th,rn);
usolve = -0.125;
m=3;
yn=ya(m,1);
if (abs(yn)>1e-6)
    cv(m)= -(rn(m)*usolve-rn(m-1)*ya(m-1,2))/((rn(m)-rn(m-1))*yn);
end
ya(m,2)=usolve;
ya = parax([yap 0],cv,th,rn);
yc = parax([0 uco],cv,th,rn);
k = -yc(4,1)/ya(4,1);
yc = yc + k*ya;
lambda = 0.006;
w = ford(ya,yc,cv,th,rn,lambda);
f(1) = w(2); % coma
f(2) = w(3); % astigmatism
f = f';

Optimization (seek.m)

function [s, damp,sigma] = seek(xi,df)
xo = xi(:);
nv = length(xo);
f = feval(df,xo);
s(1,:)=xo';
damp(1,1)=0;
sigma(1,1)=norm(f);
k=1;
fprintf('%2s %10s %8s %8s\n','n','sigma','pmin','%step');
fprintf('%2d %10.4g\n',k,sigma(1,1));

for k=2:20
    [A fz] = calculate_derivatives(df,xo);
    dv=-A\fz;
    [pmin fval]=fminbnd(@func,0,2,[],df,xo,dv);
    xo = xo+pmin*dv;
    f = feval(df,xo);
    fval = norm(f);
    s(k,:)=xo';
    damp(k,1)=pmin;
    sigma(k,1)=fval;
    fprintf('%2d %10.4g %8.4f %8.3f\n',k,fval,pmin,100.0*pmin*norm(dv)/norm(xo));
    if (fval<1e-10)
        break;
    end
end
hold on;
plot(s(:,1),s(:,2),'ko-','LineWidth',1.5);
hold off;


Maintained by John Loomis, last updated 6 Feb 2003