apochromat design

load glass;

gn = char('F2', 'KZFSN5', 'N-FK51A');
wvl = [ 0.48613 0.58756 0.65627];

look-up glass in Schott glass table

n = size(gn);
idx = zeros(n);
for k=1:n(1)
    idx(k) = strmatch(gn(k,:),glass.name);
end

calculate index of refraction at three wavelengths

for k=1:n(1)
    m = idx(k);
    rg(k,:) = sellmeier(glass.disperse(m,:),wvl);
end

powers = [1/50 1/50 1/50]';
cvd = (rg-1)'\powers;

disp('cvd');
disp(cvd);

for k=1:3
    phi = (rg(1,k)-1)*cvd(1) + (rg(2,k)-1)*cvd(2) + (rg(3,k)-1)*cvd(3);
    fprintf('phi at %g = %g\n',wvl(k),phi);
end
cvd
    0.0634
   -0.0972
    0.0911

phi at 0.48613 = 0.02
phi at 0.58756 = 0.02
phi at 0.65627 = 0.02

plot power vs wavelength

wvln = linspace(0.45,0.7,201);
dz = zeros(size(wvln));
for k=1:length(wvln)
    phi = 0.0;
    for m=1:3
        rn = sellmeier(glass.disperse(idx(m),:),wvln(k));
        phi = phi + (rn-1)*cvd(m);
    end
    dz(k) = 1/phi - 50;
end

plot(dz*1e3,wvln,'k','LineWidth',2);
axis([-10 10 0.45 0.7]);
grid
xlabel('focus shift (\mum)');
ylabel('wavlength (\mum)');