Matlab在透镜像差计算中的应用

一、设计目的

①熟悉光学系统像差的概念,产生的原因和对光学系统成像质量的影响;

②掌握各种几何像差的定义和基本理论;

③加深理解子午面内的光线光路计算。

二、设计要求

设计利用Matlab,运用光路计算方法计算双胶合透镜的球差。

三、基本原理

I.球差成因及危害

由于透镜中间部分与边缘部分顶角大小不同,使光透过时发生的偏向角大小不同,致折射光与主轴的焦点不重合而产生球差;它的存在影响光学成像系统的清晰度、相似性和色彩逼真度等。

II.轴上物点近轴光线的光路计算

①近轴光路像方参数计算:

Matlab在透镜像差计算中的应用_第1张图片

[注]:i为入射角,i'为折射角;n为透镜前方折射率,n'为透镜后方折射率,r为曲率半径;u为孔径角,u’为折射孔径角。

②近轴k个折射面组成光路计算由前一个面过渡公式:

Matlab在透镜像差计算中的应用_第2张图片

III.轴上物点远轴光线的光路计算

①远轴光路像方参数计算:

Matlab在透镜像差计算中的应用_第3张图片

②远轴k个折射面组成光路计算由前一个面过渡公式:

Matlab在透镜像差计算中的应用_第4张图片

整理得到,

四、设计实现

I.代码

clc;clear;
[nD1,nD3,nF1,nF3,nC1,nC3]=deal(1.51470,1.67270,1.52067,1.68749,1.51218,1.66662);%多参数连续赋值
[hm1,h11,LC1]=f(nD1,nD3);%D光透镜相差
[hm2,h12,LC2]=f(nF1,nF3);%F光透镜相差
[hm3,h13,LC3]=f(nC1,nC3);%C光透镜相差
plot(LC1,h11/hm1,'b-');
title('D光F光C光球差曲线')
hold on
plot(LC2,h12/hm2,'r--');
hold on 
plot(LC3,h13/hm3,'g--');
plot([0,0],[0,1],'k');
legend('D光球差曲线','F光球差曲线','C光球差曲线');
function [hm,h1,LC]=f(nD1,nD3)%3个镜面球差计算函数
r1=61.857189;r2=-43.831719;r3=-128.831547;
d1=1.9433;d2=1.1;n=1.000;
hm=20;
%定义主要参数
h1=linspace(0.01,hm,1000); u1=0;
%D(F、C)光近轴
%D(F、C)光近轴第一镜面成像参数
i1=h1./r1;
i11=n.*i1./nD1;
u11=u1+i1-i11;
l11=(i11.*r1)./u11+r1;
%D(F、C)光近轴第二面镜成像参数
l2=l11-d1;
i2=(l2-r2).*u11./r2;
i21=nD1.*i2./nD3;
u21=u11+i2-i21;
l21=r2+r2.*i21./u21;
%D(F、C)光近轴在第三镜面成像参数
l3=l21-d2;
i3=(l3-r3).*u21./r3;
i31=nD3.*i3./n;
u31=u21+i3-i31;
l31=r3+r3.*i31./u31;
%D(F、C)光远轴
%计算初值为L1=inf,U1=0,sinI1=h1/r1;
%D(F、C)光远轴在第一镜面成像参数
I1=asin(h1./r1);
I11=asin(n.*sin(I1)./nD1);
U11=0+I1-I11;
L11=r1+(r1.*sin(I11)./sin(U11));
%D(F、C)光远轴在第二镜面成像参数
L2=L11-d1;
U2=U11;
I2=asin((L2-r2).*sin(U2)./r2);
I21=asin(nD1.*sin(I2)./nD3);
U21=U2+I2-I21;
L21=r2+(r2.*sin(I21)./sin(U21));
%D(F、C)光远轴在第三镜面成像参数
L3=L21-d2;
U3=U21;
I3=asin((L3-r3).*sin(U3)./r3);
I31=asin(nD3.*sin(I3)./n);
U31=U3+I3-I31;
L31=r3+(r3.*sin(I31)./sin(U31));
%理想值减实际值得球差
LC=l31-L31;
end

II.仿真结果:

Matlab在透镜像差计算中的应用_第5张图片

你可能感兴趣的:(matlab,信息可视化,其他)