Badanie aberracji sferycznej 
grubej soczewki.
Diakaustyka.

(Projekt zaliczeniowy z kursu Mathematica II: aplikacje)

Magdalena Rusaczonek
II rok fizyki
Wydział Fizyki, Astronomii i Informatyki Stosowanej
Uniwesytet Jagielloński 
Kraków 2010
magdalena.rusaczonek@uj.edu.pl

Wstęp

Soczewka gruba

Soczewka gruba to przyrząd optyczny wykonany ze szkła lub innego przezroczystego materiału wyszlifowanego tak, aby przynajmniej jedna z jego powierzchni była zakrzywiona (np. była wycinkiem sfery, walca, itp.) [1].

Aberracja sferyczna

Aberracja sferyczna to zjawisko polagające na zmianie długości ogniskowej dla promieni monochromatycznych światła przechodzących przez układ optyczny, w zależności od odległości tych promieni od osi optycznej układu. 
Dla soczewki ogniskowa dla promieni przyosiowych jest dłuższa niż dla promieni odległych od osi optycznej.
W modelu soczewki cienkiej zaniedbuje się grubość soczewki, dlatego wszystkie promienie ogniskują się w tym samym punkcie. Jednakże, soczewki rzeczywiste mają skończoną grubość co jest powodem występowania efektów związanych z aberracją sferyczną objawiającą się spadkiem ostrości obrazu [2].

Kaustyka

Promienie świetlne przechodząc przez układ optyczny załamują się lub odbijają od niego w zależności od jego właściwości fizycznych. Kaustyka, czyli powierzchnia będąca obwiednią wiązki promieni świetlnych przechodzących przez układ, jest pewną charakterystyką układu. Obwiednię promieni odbitych nazywa się kaustyką refleksyjną lub katakaustyką, natomiast obwiednię promieni załamanych diakaustyką [3]. 
Problem wyznaczania katakaustyk jest dość szeroko opisany. Przykłady projektów na ten temat zamieszczam w bibliografii: [8], [9], [10], [11], [12]. Godny polecenia jest również artykuł ,,Ile jest zajączków'' opublikowany w Delcie w 2005 r. [13].

Opis projektu

Celem projektu jest wymodelowanie za pomocą pakietu Mathematica 7.0 biegu monochromatycznych promieni świetlnych przechodzących przez grubą soczewkę w zależności od jej promieni krzywizny, grubości oraz współczynnika załamania światła. Zakładam, że na soczewkę pada wiązka promieni równoległych, biegnących zgodnie z osią optyczną soczewki. Powierzchnie soczewki to wycinki sfer o zadanych promieniach. Soczewka ma współczynnik załamania równy n, natomiast otoczenie ma współczynnik załamania równy 1.
Po wymodelowaniu wiązki światła wychodzącej z soczewki, należy znaleźć jej kaustykę. Ze względu na stopień złożoności obliczeń procedura jest wykonana tylko dla jednego, szczególnego przypadku omówionego poniżej.

Modelowanie aberracji sferycznej

Modelowanie soczewki

Soczewki sferyczne można sklasyfikować w zależności od ich krzywizn. Wszystkie rodzaje soczewek przedstawią rysunki:

Soczewka[d_,s1_,s2_]:=Graphics[{{Thickness[Small],Hue[0.55,0.5,1,.7],Table[Line[{{((
2-d s1-2 (Sqrt[1-(s1^2) (ϵ^2)]))/(2 s1)),ϵ},{((2+d s2-2 (Sqrt[1-(s2^2) (ϵ^2)]))/(2 s2)),ϵ}}],{ϵ,-.7,.7,.0005}]}},PlotRange->{{-0.3,0.3},{-1,1}}]

GraphicsRow[{ Labeled [Soczewka[0.4,0.5,-0.5],Style["a)",Bold,16],Left], Labeled [Soczewka[0.3,0.5,0.05],Style["b)",Bold,16],Left], Labeled [Soczewka[0.3,0.6,0.4],Style["c)",Bold,16],Left], Labeled [Soczewka[0.2,0.05,0.5],Style["d)",Bold,16],Left],Labeled [Soczewka[0.2,-0.5,0.5],Style["e)",Bold,16],Left]},ImageSize->Large]

Soczewki: a) dwuwypukła, b) płasko-wypukła, c) wklęsło-wypukła, d) płasko-wklęsła, e) dwuwklęsła.

Typ soczewki określam na podstawie odwrotności promieni krzywizny powierzchni soczewki. Promień krzywizny po lewej stronie oznaczony jest przez (Subscript[R, 1]), natomiast po prawej -(Subscript[R, 2]) (znak minus przyjęty jest jako konwencja).  Przez (Subscript[s, 1])i (Subscript[s, 2]) oznaczam odpowiednio odwrotności promieni (Subscript[R, 1]) i (Subscript[R, 2]).

TypSoczewki[s1_,s2_]:=
If[s2<-.05 && s1>.05,"dwuwypukła",
If[s2>.05 && s1<-.05,"dwuwklęsła",
If[s2<-.05 && s1<-.05||s2>.05 && s1>.05,"wklęsło-wypukła",
If[s2<-.05 && Abs[s1]<.05||Abs[s2]<.05 && s1>.05,"płasko-wypukła",
If[s2>.05 && Abs[s1]<.05||Abs[s2]<.05 && s1<-.05,"płasko-wklęsła",
If[Abs[s2]<.05 && Abs[s1]<.05,"płaska",""]]]]]]

R1[s1_]:=If[ Abs[s1]<.05,"∞",PaddedForm[N[1/s1],{3,1}]]

R2[s2_]:=If[ Abs[s2]<.05,"∞",PaddedForm[N[1/s2],{3,1}]]

Opis[n_,d_,s1_,s2_]:=Style[Row[{"Soczewka ", TypSoczewki[s1,s2],": ",Subscript[Style["R",Italic],1]," = " ,R1[s1],"  ",Subscript[Style["R",Italic],2]," = ",R2[s2]}],16,Bold,White]

Znajduję współrzędną x brzegu soczewki w zależności od grubości soczewki, jej krzywizny i współrzędnej y. xP1 i xP2 oznacza odpowienio lewy i prawy brzeg soczewki. 
Wielkość η to wysokość, na której wychodzi promień z soczewki, jeśli wpadł do niej na wysokości ϵ.
Współczynniki a i b to współczynniki kierunkowe promieni odpowiednio w soczewce i po przejściu przez nią. Przy wyliczeniu współczynników a i b korzystałam z prawa załamania światła [4]:

((sin(α))/(sin(β)))=n,

gdzie α to kąt padania a β to kąt załamania zaś n to względny współczynnik załamania.

xP1[d_,s1_,y_]:=((
2-d s1-2 (Sqrt[1-(s1^2) (y^2)]))/(2 s1));
xP2[d_,s2_,y_]:=((2+d s2-2 (Sqrt[1-(s2^2) (y^2)]))/(2 s2));
η[d_,s1_,s2_,ϵ_,n_]:=Solve[ y == PromienWSoczewce[d,s1,ϵ,n,xP2[d,s2,y] ] , y ][[1]][[1]][[2]]//Simplify;
a[y_,s1_, n_]:=-Tan[ArcSin[y s1]-ArcSin[((y s1)/n)]]//Simplify;
b[y_, s1_,s2_ ,n_,d_]:=-Tan[ArcSin[n Sin[(ArcSin[-η[d,s1,s2,y,n]s2]+ArcSin[y s1]-ArcSin[((y s1)/n)])]]-ArcSin[-η[d,s1,s2,y,n]s2]]//Simplify;

Wyznaczam równania biegu promieni w soczewce i za nią:

PromienWSoczewce[d_,s1_,ϵ_,n_,x_]:=(x-xP1[d,s1,ϵ])a[ϵ,s1, n]+ϵ;
PromienZaSoczewka[d_,s1_,s2_,ϵ_,n_,x_]:=(x-xP2[d,s2,η[d,s1,s2,ϵ,n]])b[ϵ,s1, s2,n,d]+η[d,s1,s2,ϵ,n];

Rysuję soczewkę oraz promienie świetlne:

g[n_,d_,s1_,s2_]:=Graphics[{{Thickness[Small],Hue[0.55,0.5,1,.7],Table[Line[{{((
2-d s1-2 (Sqrt[1-(s1^2) (ϵ^2)]))/(2 s1)),ϵ},{((2+d s2-2 (Sqrt[1-(s2^2) (ϵ^2)]))/(2 s2)),ϵ}}],{ϵ,-.7,.7,.0005}]},Table[{Thickness[Small],Yellow,Line[{{-1,ϵ},{xP1[d,s1,ϵ],ϵ},{xP2[d,s2,η[d,s1,s2,ϵ,n]],η[d,s1,s2,ϵ,n]},{4,PromienZaSoczewka[d,s1,s2,ϵ,n,4]}}]},{ϵ,-.6,.6,.1}]},PlotRange->{{-1,4},{-1.5,1.5}}, ImageSize->{600,300},Epilog->Inset[Opis[n,d,s1,s2],{1.5,-1.35}], Background->Black]

Manipulate[ 
g[n,d,s1,s2],
{{n,1.65,Style["Współczynnik załamania n",Bold]},1.0005,2.8, 0.1,Appearance->"Labeled"},{{d,.5,Style["Grubość soczewki d",Bold]},.45,.7, 0.05,Appearance->"Labeled"},{{s1,.3,Style[Row[{"Krzywizna ",1/Subscript[R,1]}],Bold]},-.2999,.4001,.1,Appearance->"Labeled"},{{s2,-.3,Style[Row[{"Krzywizna ",1/Subscript[R,2]}],Bold]},-.3999,.2001,.1,Appearance->"Labeled"}, SaveDefinitions->True]

Wyznaczanie diakaustyki

Ogólny przypadek

Jeśli dany jest zbiór krzywych sparametryzowanych przez ϵ tak, że:

F(x, y, ϵ) = 0.

To jej obwiedną jest rozwiązanie układu równań [5]:

F(x,y,ϵ)=0 ⋀((∂F(x,y,ϵ))/(∂ϵ))=0.

Przykład kaustyki

Rozważmy okrąg jednostkowy poruszający się wzdłuż osi x. Można go opisać za pomocą równania:

(Subscript[F, o])[x_,y_,t_]=(((x-t))^2)+(y^2)-1;

Solve[{(Subscript[F, o])[x,y,t]==0, D[(Subscript[F, o])[x,y,t],t]==0},{x,y}]

Okregi=ParametricPlot[Table[{Sin[t]+x,Cos[t]},{x,-π,π,(π/4)}],{t,0,2π}];

Obwiednie=Plot[{-1,1},{y,-4.2,4.2},PlotStyle->{{Red,Thick},{Red,Thick}}];

Show[Okregi,Obwiednie]

Ogólny przypadek dla soczewki

W przypadku soczewki należałoby rozwiązać równania:

F[x_, y_, ϵ_, d_, s1_, s2_, n_] := y - PromienZaSoczewka[d, s1, s2, ϵ, n, x];

Solve[{F[x, y, ϵ, d, s1, s2, n] == 0, D[F[x, y, ϵ, d, s1, s2, n], ϵ] == 0}, {x, y}];

Niestety wydaje się, że są one zbyt skąplikowane, gdyż program nie daje wyniku w rozsądnym czasie.

Szczególny przypadek

Wyznaczę kaustykę dla promieni przechodzących przez soczewkę płasko-wypukłą, o promieniu (Subscript[R, 2])=-2.0,  grubości d=0.5, która została wykonana z rutylu [6].  Rutyl to kryształ dwójłomny o współczynnikach załamania (Subscript[n, o])=2,616, (Subscript[n, e])=2,903.
 Przy obliczeniach będę używała większego współczynnika załamania: n=2,9.
Oto rysunek przedstawiający badany przypadek:

g[2.9,0.5,0.001,-0.5]

Zbiór promieni wychodzących z soczewki (k to odległość między promieniami):

Linie[n_,d_,s1_,s2_,k_]:=Table[{Thickness[Small],Yellow,Line[{{xP2[d,s2,η[d,s1,s2,ϵ,n]],η[d,s1,s2,ϵ,n]},{2,PromienZaSoczewka[d,s1,s2,ϵ,n,2]}}]},{ϵ,-.6,.6,k}];

Promienie oraz soczewka:

LinieSoczewka[n_,d_,s1_,s2_,k_]:={{Thickness[Small],Hue[0.55,0.5,1,.7],Table[Line[{{0,ϵ},{((2+d s2-2 (Sqrt[1-(s2^2) (ϵ^2)]))/(2 s2)),ϵ}}],{ϵ,-.7,.7,.0005}]},Table[{Thickness[Medium],Yellow,Line[{{-1,ϵ},{xP1[d,s1,ϵ],ϵ},{xP2[d,s2,η[d,s1,s2,ϵ,n]],η[d,s1,s2,ϵ,n]},{2,PromienZaSoczewka[d,s1,s2,ϵ,n,2]}}]},{ϵ,-.6,.6,k}]};

Przypadek soczewki wykonanej z rutylu:

Rutyl=Linie[2.9,0.5,0.001,-0.5,.03];

Dlugosc=Length[Rutyl];

Każdy promień traktuję jako linię prostą postaci y = ax + b. Wyznaczam współczynniki a i b dla kolejnych promieni:

Wspolczynniki=Table[Solve[{
a Rutyl[[i]][[3]][[1]][[1]][[1]] + b ==Rutyl[[i]][[3]][[1]][[1]][[2]],a Rutyl[[i]][[3]][[1]][[2]][[1]]+ b ==Rutyl[[i]][[3]][[1]][[2]][[2]]
},{a,b} ],{i,1,Dlugosc}];

Wyznaczam punkty przecięcia sąsiadujących promieni:

Punkty=Table[{Solve[{y==Wspolczynniki[[i]][[1]][[1]][[2]]x+Wspolczynniki[[i]][[1]][[2]][[2]],y==Wspolczynniki[[i+1]][[1]][[1]][[2]]x+Wspolczynniki[[i+1]][[1]][[2]][[2]]},{x,y}][[1]][[1]][[2]],Solve[{y==Wspolczynniki[[i]][[1]][[1]][[2]]x+Wspolczynniki[[i]][[1]][[2]][[2]],y==Wspolczynniki[[i+1]][[1]][[1]][[2]]x+Wspolczynniki[[i+1]][[1]][[2]][[2]]},{x,y}][[1]][[2]][[2]]},{i,1,Dlugosc-1}];

Dołączam punkty na brzegu soczewki:

Punkty2=Join[{Rutyl[[1]][[3]][[1]][[1]]},Punkty,{Rutyl[[Dlugosc]][[3]][[1]][[1]]}];

Oto wyznaczona kaustyka (rysunki dla różnej ilości promieni przechodzących przez soczewkę):

GraphicsRow[{Graphics[{LinieSoczewka[2.9,0.5,0.001,-0.5,0.1],Style[Line[Punkty2],Red]}],
Graphics[{LinieSoczewka[2.9,0.5,0.001,-0.5,0.03], Style[Line[Punkty2],Red]},ImageSize->Medium]}]

Jak widać na powyższych rysunkach na skutek aberracji sferycznej powstaje kaustyka typu kolec. W efekcie obraz jest nieostry. Dlatego aberrację sferyczną nazywa się wadą soczewki. Aby zniwelować nieporządany efekt stosuje się bardziej skomplikowane układy soczewek skupiających i rozpraszających.

Bibliografia

[1] Soczewka: http://pl.wikipedia.org/wiki/Soczewka

[2] Aberracja sferyczna: http://en.wikipedia.org/wiki/Spherical_aberration

[3] Kaustyka (optyka): http://en.wikipedia.org/wiki/Caustic_(optics)

[4] Prawo załamania: http://pl.wikipedia.org/wiki/Refrakcja

[5] Obwiednia: http://pl.wikipedia.org/wiki/Obwiednia

[6] Rutyl: http://pl.wikipedia.org/wiki/Rutyl

[7] Kaustyka (matematyka): http://wapedia.mobi/en/Caustic_(mathematics)

Katakaustyki – przykłady:

[8] http://demonstrations.wolfram.com/CatacausticsForSomeGraphs/

[9] http://demonstrations.wolfram.com/CatacausticsGeneratedByAPointSource/

[10] http://mathworld.wolfram.com/ParabolaCatacaustic.html

[11] http://mathworld.wolfram.com/NaturalLogarithmCatacaustic.html

[12] http://mathworld.wolfram.com/CircleCatacaustic.html

Artykuł:

[13] Grzegorz Derfel, Ile jest zajączków?, Delta 11/05, Warszawa 2005