%============================================================
% Tony Hyun Kim
% 6.161 PS#2
% Problem 2: Three lens imaging system
%============================================================



%============================================================
% Part A: The expanded matrix M (not pretty!)
%============================================================
syms f1 f2 f3 d1 d2 d3 d4;

D1 = [1 d1; 0 1];
D2 = [1 d2; 0 1];
D3 = [1 d3; 0 1];
D4 = [1 d4; 0 1];

L1 = [1 0; -1/f1 1];
L2 = [1 0; -1/f2 1];
L3 = [1 0; -1/f3 1];

M = simple(D4*L3*D3*L2*D2*L1*D1);
%------------------------------------------------------------
% RESULTS
%------------------------------------------------------------
% M(1,1) = 1-d4/f3-((1-d4/f3)*d3+d4)/f2+(-(1-d4/f3-((1-d4/f3)*d3+d4)/f2)*d2-(1-d4/f3)*d3-d4)/f1
% M(1,2) =(1-d4/f3-((1-d4/f3)*d3+d4)/f2+(-(1-d4/f3-((1-d4/f3)*d3+d4)/f2)*d2-(1-d4/f3)*d3-d4)/f1)*d1+(1-d4/f3-((1-d4/f3)*d3+d4)/f2)*d2+(1-d4/f3)*d3+d4
% M(2,1) = -1/f3+(1/f3*d3-1)/f2-((-1/f3+(1/f3*d3-1)/f2)*d2-1/f3*d3+1)/f1
% M(2,2) =(-1/f3+(1/f3*d3-1)/f2-((-1/f3+(1/f3*d3-1)/f2)*d2-1/f3*d3+1)/f1)*d1+(-1/f3+(1/f3*d3-1)/f2)*d2-1/f3*d3+1
%------------------------------------------------------------



%============================================================
% Part B: Solving for d4 s.t. M(1,2)=0
%============================================================
d4 = solve(M(1,2),d4); % Find d4 s.t. M(1,2) = 0
%pretty(d4);
%------------------------------------------------------------
% RESULTS
%------------------------------------------------------------
%  d4 =  - (d1 f2 f1 - d1 f1 d3 - d1 d2 f2 + d1 d2 d3 - d1 d3 f2 + d2 f1 f2
% 
%          - d2 f1 d3 + d3 f2 f1) f3/(-d1 f2 f1 + d1 f1 d3 - d1 f1 f3 + d1 d2 f2
% 
%          - d1 d2 d3 + d1 d2 f3 + d1 d3 f2 - d1 f3 f2 - d2 f1 f2 + d2 f1 d3
% 
%          - d2 f1 f3 - d3 f2 f1 + f3 f2 f1)
%------------------------------------------------------------



%============================================================
% Part C: Solving for the corresponding magnification
%============================================================
D4 = [1 d4; 0 1]; % Now rebuild D4 using the d4 that satisfies the 
                  % imaging condition
M = simple(D4*L3*D3*L2*D2*L1*D1); % And recompute the system matrix
%pretty(M(1,1));
%------------------------------------------------------------
% RESULTS
%------------------------------------------------------------
%  M(1,1) = f2 f1 f3/(-d1 f2 f1 + d1 f1 d3 - d1 f1 f3 + d1 d2 f2 - d1 d2 d3 + d1 d2 f3
% 
%            + d1 d3 f2 - d1 f3 f2 - d2 f1 f2 + d2 f1 d3 - d2 f1 f3 - d3 f2 f1
% 
%            + f3 f2 f1)
%------------------------------------------------------------



%============================================================
% Parts D and E: Evaluate these expressions for specific
%   parameters. (See next line.)
%============================================================
subs(d4,{f1,f2,f3,d1,d2,d3},{50,-50,100,100,50,150}); % d4 = 100
subs(M,{f1,f2,f3,d1,d2,d3},{50,-50,100,100,50,150});  % M = [-2 0; 0.1 -0.5]



%============================================================
% Part F: Consider the special case d1 = f1, d3 = f2 + f3
%         What is the condition on d2 s.t. the image is at 
%         infinity?
%   In the problem set, I explain that the infinitely far
%   imaging condition is equal to setting M(2,2) = 0
%============================================================
d1 = f1;
d3 = f2 + f3;
clear d4; syms d4;
D1 = [1 d1; 0 1];
D2 = [1 d2; 0 1];
D3 = [1 d3; 0 1];
D4 = [1 d4; 0 1];
M = simple(D4*L3*D3*L2*D2*L1*D1); % And recompute the system matrix
solve(M(2,2),d2)
