Maple/球面像差

球面像差的成因是经过透镜折射或面镜反射的光线,接近中心与靠近边缘的光线不能将影像聚集在一个点上的现象。

光的球面折射

根据单球面的折射方程

> F1 := sin(J) = sin(U)*(L-r)/r;

                            sin(U) (L - r)
                   sin(J) = --------------
                                  r       

> F2 := sin(Jp) = N*sin(J)/Np;

                                N sin(J)
                      sin(Jp) = --------
                                   Np   

> F3 := U+J = Up+Jp;

                       U + J = Up + Jp

> F4 := Lp-r = sin(Jp)*r/sin(Up);

                               sin(Jp) r
                      Lp - r = ---------
                                sin(Up) 

可以导出单球面像差的准确方程式

EQten := [1]

其中

  • L 为 入射光与光轴交点到球面顶点的距离
  • Lp 折射光与光轴交点到球面顶点的距离
  • J 为 入射角
  • Jp 为折射角
  • U 为 入射光与光轴的夹角
  • Up 折射光与光轴的夹角
  • r 为球面半径
  • N,Np 为球面两边的折射率

球面像差公式的推导

编辑

先列出几个常用的子程序

> Pinvert := proc (epr) 1/op(1, epr) = 1/op(2, epr) end proc;

> PoneMinusLH := proc (expres) simplify(1-lhs(expres) = 1-rhs(expres)) end proc;

> > PsinAddsin := proc (a, b) sin(a)+sin(b) = 2*sin((1/2)*a+(1/2)*b)*cos((1/2)*a-(1/2)*b) end proc;

> > PcosSubcos := proc (p, q) {cos(p)-cos(q) = 2*sin((1/2)*p+(1/2)*q)*sin((1/2)*q-(1/2)*p)} end proc;

> > > > F1 := sin(J) = sin(U)*(L-r)/r;

           
                                  r       

> F2 := sin(Jp) = N*sin(J)/Np;

            
                                      

> F3 := U+J = Up+Jp;

                       U + J = Up + Jp

> F4 := Lp-r = sin(Jp)*r/sin(Up);

                
                                 

> > > sys1 := {F1};

                  /         sin(U) (L - r)\ 
                 \  { sin(J) = -------------- }
                  \               r       / 

> > g2 := solve(sys1, L);

                  /    r (sin(J) + sin(U))\ 
                 { L = ------------------- }
                  \          sin(U)       / 

> G1 := op(1, g2);

                       r (sin(J) + sin(U))
                   L = -------------------
                             sin(U)       

> > > sys4 := {F4};

                     /         sin(Jp) r\ 
                    { Lp - r = --------- }
                     \          sin(Up) / 

> > g4 := solve(sys4, Lp);

                 /     r (sin(Jp) + sin(Up))\ 
                { Lp = --------------------- }
                 \            sin(Up)       / 

> > G4 := op(g4);

                       r (sin(Jp) + sin(Up))
                  Lp = ---------------------
                              sin(Up)       

> > > G1INV := Pinvert(G1);

                   1         sin(U)       
                   - = -------------------
                   L   r (sin(J) + sin(U))

> G4INV := Pinvert(G4);

                  1           sin(Up)       
                  -- = ---------------------
                  Lp   r (sin(Jp) + sin(Up))

> > NG1 := r*G1INV;

                     r       sin(U)     
                     - = ---------------
                     L   sin(J) + sin(U)

> NG4 := r*G4INV;

                    r         sin(Up)     
                    -- = -----------------
                    Lp   sin(Jp) + sin(Up)

> > NG1a := PoneMinusLH(NG1);

                   L - r       sin(J)     
                   ----- = ---------------
                     L     sin(J) + sin(U)

> > NG4a := PoneMinusLH(NG4);

                  Lp - r        sin(Jp)     
                  ------ = -----------------
                    Lp     sin(Jp) + sin(Up)

> > > > > NG4aR := rhs(NG4a); NG1aR := rhs(NG1a);

                           sin(Jp)     
                      -----------------
                      sin(Jp) + sin(Up)
                           sin(J)     
                       ---------------
                       sin(J) + sin(U)

> h1a := r/L = 1-NG1aR;

                   r           sin(J)     
                   - = 1 - ---------------
                   L       sin(J) + sin(U)

> h2a := r/Lp = 1-NG4aR;

                  r             sin(Jp)     
                  -- = 1 - -----------------
                  Lp       sin(Jp) + sin(Up)

> > H1 := h1a*N/r;

                       /        sin(J)     \
                     N |1 - ---------------|
                 N     \    sin(J) + sin(U)/
                 - = -----------------------
                 L              r           

> H1EX := expand(H1);

                 N   N        N sin(J)      
                 - = - - -------------------
                 L   r   r (sin(J) + sin(U))

> NG1aR;

                           sin(J)     
                       ---------------
                       sin(J) + sin(U)

> H2 := h2a*Np/r;

                       /         sin(Jp)     \
                    Np |1 - -----------------|
               Np      \    sin(Jp) + sin(Up)/
               -- = --------------------------
               Lp               r             

> > H2EX := expand(H2);

               Np   Np        Np sin(Jp)      
               -- = -- - ---------------------
               Lp   r    r (sin(Jp) + sin(Up))

> > > H1H2 := H2EX-H1EX;

Np   N   Np        Np sin(Jp)         N        N sin(J)      
-- - - = -- - --------------------- - - + -------------------
Lp   L   r    r (sin(Jp) + sin(Up))   r   r (sin(J) + sin(U))

> > > > > K := algsubs(Np*sin(Jp) = N*sin(J), H1H2); Np N N sin(J) Np N N sin(J) -- - - = - --------------------- + -- - - + ------------------- Lp L r (sin(Jp) + sin(Up)) r r r (sin(J) + sin(U)) > > > KR := rhs(K); KL := lhs(K);

            N sin(J)          Np   N        N sin(J)      
    - --------------------- + -- - - + -------------------
      r (sin(Jp) + sin(Up))   r    r   r (sin(J) + sin(U))
                            Np   N
                            -- - -
                            Lp   L

> > > op(KR);

            N sin(J)         Np    N       N sin(J)      
    - ---------------------, --, - -, -------------------
      r (sin(Jp) + sin(Up))  r     r  r (sin(J) + sin(U))

> > > KR1 := op(1, KR);

                           N sin(J)       
                   - ---------------------
                     r (sin(Jp) + sin(Up))

> > KR4 := op(4, KR);

                          N sin(J)      
                     -------------------
                     r (sin(J) + sin(U))

> > KR1KR4 := KR1+KR4;

                N sin(J)               N sin(J)      
        - --------------------- + -------------------
          r (sin(Jp) + sin(Up))   r (sin(J) + sin(U))

> > KR1KR4a := KR1KR4 = KR4*(1+X);

               N sin(J)               N sin(J)         
       - --------------------- + ------------------- = 
         r (sin(Jp) + sin(Up))   r (sin(J) + sin(U))   
          N sin(J) (1 + X)  
         -------------------
         r (sin(J) + sin(U))

> > > KR1KR4RH := rhs(KR1KR4a);

                      N sin(J) (1 + X)  
                     -------------------
                     r (sin(J) + sin(U))

> > > TM1 := subs(1+X = Z, KR1KR4RH);

                         N sin(J) Z     
                     -------------------
                     r (sin(J) + sin(U))

> > NG1a; T1 := rhs(NG1a); T2 := lhs(NG1a);

                   L - r       sin(J)     
                   ----- = ---------------
                     L     sin(J) + sin(U)
                           sin(J)     
                       ---------------
                       sin(J) + sin(U)
                            L - r
                            -----
                              L  

> TM2 := subs(sin(J)+sin(U) = sinJplussinU, TM1);

                          N sin(J) Z  
                        --------------
                        r sinJplussinU

> TM3 := algsubs(sin(J)/sinJplussinU = (L-r)/L, TM2);

                         N Z (L - r)
                         -----------
                             r L    

> > > > > > Y := solve(KR1KR4a, X);

                        sin(J) + sin(U) 
                     - -----------------
                       sin(Jp) + sin(Up)

> kr1kr4 := KR4*(1+Y);

                        /     sin(J) + sin(U) \
               N sin(J) |1 - -----------------|
                        \    sin(Jp) + sin(Up)/
               --------------------------------
                     r (sin(J) + sin(U))       

> > T1 := algsubs(sin(J)+sin(U) = L*sin(J)/(L-r), KR1KR4RH);

                      /          L sin(J)\        
            N (1 + X) |-sin(U) + --------| (L - r)
                      \           L - r  /        
            --------------------------------------
                          r L sin(J)              

> KR1and4 := subs(Z = 1+Y, TM3);

                        /     sin(J) + sin(U) \
              N (L - r) |1 - -----------------|
                        \    sin(Jp) + sin(Up)/
              ---------------------------------
                             r L               

> > > > > > > > s1 := PsinAddsin(Jp, Up);

                            /1      1   \    /1      1   \
   sin(Jp) + sin(Up) = 2 sin|- Jp + - Up| cos|- Jp - - Up|
                            \2      2   /    \2      2   /

> op(s1);

                            /1      1   \    /1      1   \
    sin(Jp) + sin(Up), 2 sin|- Jp + - Up| cos|- Jp - - Up|
                            \2      2   /    \2      2   /

> t4d := algsubs(s1, KR1and4);

               /         -sin(J) - sin(U)              \
     N (L - r) |----------------------------------- + 1|
               |     /1      1   \    /1      1   \    |
               |2 sin|- Jp + - Up| cos|- Jp - - Up|    |
               \     \2      2   /    \2      2   /    /
     ---------------------------------------------------
                             r L                        

> s2 := PsinAddsin(J, U);

                             /1     1  \    /1     1  \
      sin(J) + sin(U) = 2 sin|- J + - U| cos|- J - - U|
                             \2     2  /    \2     2  /

> t4e := algsubs(s2, t4d);

               /       /1     1  \    /1     1  \      \
               |    sin|- J + - U| cos|- J - - U|      |
               |       \2     2  /    \2     2  /      |
     N (L - r) |- --------------------------------- + 1|
               |     /1      1   \    /1      1   \    |
               |  sin|- Jp + - Up| cos|- Jp - - Up|    |
               \     \2      2   /    \2      2   /    /
     ---------------------------------------------------
                             r L                        

> t4f := algsubs(U+J = Up+Jp, t4e);

                     /     /     1      1   \    \
                     |  cos|-U + - Up + - Jp|    |
                     |     \     2      2   /    |
           N (L - r) |- --------------------- + 1|
                     |       /1      1   \       |
                     |    cos|- Jp - - Up|       |
                     \       \2      2   /       /
           ---------------------------------------
                             r L                  

> t4g := simplify(t4f);

                /   /     1      1   \      /1      1   \\
      N (L - r) |cos|-U + - Up + - Jp| - cos|- Jp - - Up||
                \   \     2      2   /      \2      2   //
    - ----------------------------------------------------
                             /1      1   \                
                      r L cos|- Jp - - Up|                
                             \2      2   /                

> > > s3 := PcosSubcos((Jp-Up)*(1/2), -U+(1/2)*Up+(1/2)*Jp);

/    /     1      1   \      /1      1   \         /1      1  \ 

{ -cos|-U + - Up + - Jp| + cos|- Jp - - Up| = -2 sin|- Jp - - U|

\    \     2      2   /      \2      2   /         \2      2  / 
    /1     1   \\ 
 sin|- U - - Up| }
    \2     2   // 

> s4 := op(s3);

   /     1      1   \      /1      1   \         /1      1  \ 

-cos|-U + - Up + - Jp| + cos|- Jp - - Up| = -2 sin|- Jp - - U|

   \     2      2   /      \2      2   /         \2      2  / 
    /1     1   \
 sin|- U - - Up|
    \2     2   /

> s5 := algsubs(s4, t4g);

                         /1      1  \    /1     1   \
          2 N (L - r) sin|- Jp - - U| sin|- U - - Up|
                         \2      2  /    \2     2   /
        - -------------------------------------------
                            /1      1   \            
                     r L cos|- Jp - - Up|            
                            \2      2   /            

> > s6 := subs(sin((1/2)*U-(1/2)*Up) = sin((Jp-J)*(1/2)), s5);

                       /1      1  \    /  1      1  \
        2 N (L - r) sin|- Jp - - U| sin|- - Jp + - J|
                       \2      2  /    \  2      2  /
        ---------------------------------------------
                           /1      1   \             
                    r L cos|- Jp - - Up|             
                           \2      2   /             

> > EQten := KL = op(2, KR)+op(3, KR)+s6;

                                /1      1  \    /  1      1  \
                 2 N (L - r) sin|- Jp - - U| sin|- - Jp + - J|

Np N Np N \2 2 / \ 2 2 / -- - - = -- - - + --------------------------------------------- Lp L r r /1 1 \

                             r L cos|- Jp - - Up|             
                                    \2      2   /             
              

EQten :=  [2]


参考文献

编辑
  1. Conrady, p74-80 (10)*
  2. Conrady, p74-80 (10)*

Alexander Eugen Conrady Applied Optics & Optical Design Dover