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