From 24aa8173a2f2a9c2a38fbc079f96c13ee29761fd Mon Sep 17 00:00:00 2001 From: Frank Cichos Date: Fri, 12 Apr 2024 23:10:01 +0200 Subject: [PATCH] lecture 2 --- build/doctrees/environment.pickle | Bin 856072 -> 875489 bytes .../nbsphinx/notebooks/L1/1_ray_optics.ipynb | 165 ++++++++++++++---- .../notebooks/L1/1_ray_optics.doctree | Bin 87425 -> 101781 bytes build/doctrees/notebooks/L1/Lecture1.doctree | Bin 369686 -> 369686 bytes .../notebooks/L1/1_ray_optics.ipynb.txt | 165 ++++++++++++++---- build/html/notebooks/L1/1_ray_optics.html | 146 ++++++++++------ build/html/notebooks/L1/1_ray_optics.ipynb | 165 ++++++++++++++---- build/html/notebooks/L1/Lecture1.html | 2 +- build/html/searchindex.js | 2 +- .../notebooks/L1/1_ray_optics.ipynb.txt | 165 ++++++++++++++---- docs/notebooks/L1/1_ray_optics.html | 146 ++++++++++------ docs/notebooks/L1/1_ray_optics.ipynb | 165 ++++++++++++++---- docs/notebooks/L1/Lecture1.html | 2 +- docs/searchindex.js | 2 +- .../1_ray_optics-checkpoint.ipynb | 165 ++++++++++++++---- source/notebooks/L1/1_ray_optics.ipynb | 165 ++++++++++++++---- 16 files changed, 1083 insertions(+), 372 deletions(-) diff --git a/build/doctrees/environment.pickle b/build/doctrees/environment.pickle index 69cd05992598eb43e4095118109eccce2e8ed3f7..d30fa6c0daa10a397b4a3cf207a8ca18978c4d4a 100644 GIT binary patch delta 114054 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 delta 111229 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 Yu#$yL*5`=w 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 A)&Kwi diff --git a/build/doctrees/nbsphinx/notebooks/L1/1_ray_optics.ipynb b/build/doctrees/nbsphinx/notebooks/L1/1_ray_optics.ipynb index ec85e02..c2e94fa 100644 --- a/build/doctrees/nbsphinx/notebooks/L1/1_ray_optics.ipynb +++ b/build/doctrees/nbsphinx/notebooks/L1/1_ray_optics.ipynb @@ -130,12 +130,48 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 102, "id": "fbf42d2d-ba72-4d79-b251-bf343a9c054c", "metadata": { "tags": [] }, "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -184,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 103, "id": "a7043a8d-8a5a-4b0a-9ec3-3c61e77665b1", "metadata": { "tags": [] @@ -241,33 +277,70 @@ { "data": { "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "81c9708e657a43299356d6d746905d25", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=50.0, continuous_update=False, description='Radius:', min=10.0, step=1…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", "
\n", + "\n", "\n" ], "text/plain": [ @@ -279,35 +352,51 @@ } ], "source": [ - "%%html\n", + "from ipywidgets import interact, FloatSlider\n", + "from IPython.display import display, HTML, Javascript\n", + "\n", + "# Define the function to update the circle radius\n", + "def update_circle_radius(radius):\n", + " display(Javascript(f\"\"\"\n", + " (function() {{\n", + " var circle = d3.select(\"#d3-circle\");\n", + " if(circle) circle.attr(\"r\", {radius});\n", + " }})();\n", + " \"\"\"))\n", + "\n", + "# Create the slider widget\n", + "slider = FloatSlider(\n", + " value=50,\n", + " min=10,\n", + " max=100,\n", + " step=1,\n", + " description='Radius:',\n", + " continuous_update=False\n", + ")\n", + "\n", + "# Display the slider and pass the update function as the callback\n", + "interact(update_circle_radius, radius=slider)\n", + "\n", + "# Define the HTML and JavaScript code for the initial D3.js circle\n", + "html_code = \"\"\"\n", "
\n", + "\n", "" + "\n", + "\"\"\"\n", + "\n", + "# Display the initial D3.js circle\n", + "display(HTML(html_code))" ] }, { diff --git a/build/doctrees/notebooks/L1/1_ray_optics.doctree b/build/doctrees/notebooks/L1/1_ray_optics.doctree index 5b29daf4b5e59390b92a2c384f38166b57af1eb5..45c6383285c9eaa47794084734836caef4a79995 100644 GIT binary patch delta 11566 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 G4gU%0yI{Ql delta 8800 zcmeHNe_T^Xw&zTQ3*k2;fE6VOD8C7W5D-BqVnqZ+mugj%0D&Z8zyuUUMbz3wSVaeW zeO-N)=c`+_wzb)3_H~PGZELM{t*oEbR%_jLTU*&G@~rK9Z{4~x_ueEI;=-T1e>9&D zxi{y0&-a{}b7t<$T=xFbqy3n>`)2pOE8I@FZ;eoB($iCw+6+xqnp%}!lU|#pRA#Bt zvZ}L`>eO_#CJnzFv43n(abhxF5#wY1cg3G2W1_9S(SPtzsB5&E7ND;@*tP|bfo^)>ve{wm zCkw#W`z&&Ei;2-Ut*V#eX(waybEPRMib9j6*{oB{R3#fN3WG&a-=MA0)kqDsir5-e zoT62#ARmHTsH@jiHz}I*Iz@GZsYz=v>C8CNlA3G>iKEe{DJ(h?c8vvB+T?9%S-iB6#>=os&nWwdhDE zB-86$(q64OE}N2-TXYJoqMnl|h|*xHQ`9z_s;N(@bR%gy0q`A1d|Ddnb;&xjxxpMe zneXKk(#@uZCZVe*$7M@5N~fn-s?CPRrd%QGi+@VizecixACoLxHY*qxm&;iHwV**i zdayGpAaUG)hnpMj-XkYtj?Lc)DY(A59F+lv+W0-Ca*xfF2H_!HFz&8NMvsJu35;^xazwn2MhqDQs6r}FF4%d5 zBN*qkXEB|WWUeRP+i8K!1C<|qF3sMp^G!p3yW}hI5T#^Pwgi3)c4H1-%_(Dog zyn1FnD%r+Get?S{j&crvn31m+zPG5DIY9}eUR=PF_O#|PHbFo;IN6JKFmp-}kzf(y#q}^Dp^@GdB0b7Q z`X1ob2i9A2*2DsHp4x2kqRGdvtUU@J& zy#p6Hn%i81@!^d|$>Mhr&OABwr|JBkG@Va*%nac&o&S`hf9fOmAI{>tHs!$(zPPCy zzxtafys@nS{$hQ%?Kc3S*7fa5fQk6nmg7t`A_H~16qCV?cW?a}heg|FLLffTS&HJx zgxF_6f0E)qWhSz(yTiD^FQjg6`pJ5UK1yG%k1kOn+#jPEDa}CE!BgKM^uJQ}L^Px` z+0@GyQmivu(;76$8pH$=Xq9%+u6Uk~i*sKbe{9 z2qYNaet!xo;)5v_#4D2OaNh?$Xqh+u_yZeSpn7^6hYa4h{lhp|h9h?d<9omN!RJ1dp=WqlPBeo^UwNOMJa$V;&Q|BB zNK3c{b;`z`SbZv4S*t2~jG08L)vL)b4f)He=;@MZ>zjIvIYi#&zSdCFr0+4#@Wyw} z=1lAx))$e+|k-m`@3qQ_@)8N$E&s2g1nGN~1MN}CXDJ$}v; z&>y|o-bql3KKEvaCP6$??F8WB^J?@!FsyaTtryR`1CWRI3lsOK(m;aSpO3)rT<~G^ zP7GdoApyb(B#zV6i!`?`3_!BoINo7w5R9E$T^h{q&WD!OxdGOx*olMYuzzV*sV zDo^bXXHV6UrGV_y32@d92;XmSq)Xf)8}=ZA32@bJ6y`93WKqWu16u1XqHvddmJRT| zy+!}y===3N#u|1l10io;JpZ~D1^YS%50QLx{UB9P!c9&>eB}!hN+7`ga9n*O2dSuy zib}5Bh@=;a-|WO&Xa6w@&^%whlr|A3Wg^I!#x6^ z|C_Vu6WZ27bcJsx`4u`~rb61z=S4)H4XglkUmzM3i1rD9$IQ1cBJ6di6_I&+sBaSf z&pR3v?&qA{$NLSN-4FA#`v~bP2-n_y2dVt{{y0IMjrYT3pyR89OYp_PU!y`lzT@-# z_>Q+aG1e!BLJ(Rm0G0>B~wek%f;dXNIBTL5$kfVV|}tv~DmbVLBW zBmmwM0gnCONkFFsz$pRnp$PE9UrPX86988Pz{euM)xTu}`c44c69Av^0PDU--N2>- z96(`Bdik@n5YVeb%?&ja<omlt9z@wHrQieTzXanG{(Pm} zbD~(}1M|^2jxCnm-~(~!_dMk}f$}>i*rxD>G(ZCa-7SIcdlBLrKS%^53E-oBBq07@ zgg6=iM*)Qkh_C=Yq#s3yfgrdANG%{z1q6~f`=nM5#{rcJh&ckn!--&zgu>gXI)F~) z?9MO0Pc+~v> zwk#52;68_n5~0pS!W{_4{h!POe;j!+fr$|*i=u!Y4z!GRM3JX7HA;1gZS$tWw?LlAG=PF?3+vOMq55OpKDaC33)_z+vO607G16;0R%n#P)q6ygrWX*=dNS)Y+jx zI;hz1Q^5uwbK){y%nqc%0(32qY{w(mU9-W9tyMvO&}Y;Szf4;wvOljPEx$|cgUWd^ zA5L?X@oFIZw(Lf+OG!3ST*%pb|uBF2f@WZ_~5^=z3ub^jK8PBT;V|b7~ zxW_Us6)`qukR5)qgR#Pe(N?S>6&A49uiTCMaHqf1M|ZG7U~xNmxnh)6V#uDE_puMi%ie{7YKRUWM)=9~JJsZ}+TMov5b7g$Fh^$u5jn4Q> z5##(hun<0XFdlGaL#>;cb01TJ$>!_D_ zg>7*O_(@Q_ApMmHesVs%gfa!i5kWy8NA}4~nEYRpa4*l;@C6W#%4OVJvIR2!E!jL7 zeM@E|Z^@#h$V7F)Y`|Lb`fR0)Kigj<6VCSM$+)w9M4m#X=9wdX+~Ryp#fqOjiT24H zNB(@QZ32a{?AGzPszIGtxJk;YeLY-1ZtL&s$NYXD-^Zcr0X?D9$| z80l(I!oE=ny->jRCqM*i(ZW;cE16^28gP@ai%y^(aF5p!!oNyvg;fwQK@Vkg&t3%M z*nSx~^6Cx^rJ^AnWC|*NJ0CJkeXJIi5;eCpkFJBM5bID+en`A?X9M1G+hT81qp&g~nb4LGQ(ZE^28XI~nCc@V9HFH1 zuZOeUE1?*+@ah-Ogi0Nu#<2c6n8N1OgOp;)wt?*q0C#j##+}HG=sSk=6?qrSdaoko zbVSaT(_uMZPKV@-dsd${t?_@}R(w;dLbm;p@sRgs&@NO6%&TjIXN^{&G2g z3y?a5Yf@SW-=vffdy{=N oSx8=tg`lct59M|bWkw)o0%B$$X4&qc%<5o5Q0Mj);jDQ+09ryb2><{9 delta 181 zcmbPsLTuUzu?@Cz3I=J0X(k3{h8C&G<|b)rW)`MtrWU5Amd1&xmKG_-$&+K{rV>=N oSx8=tg`lct59M|bWkw)o0%B$$X4&qc%<5o5Q0Mj);jDQ+08>jcl>h($ diff --git a/build/html/_sources/notebooks/L1/1_ray_optics.ipynb.txt b/build/html/_sources/notebooks/L1/1_ray_optics.ipynb.txt index ec85e02..c2e94fa 100644 --- a/build/html/_sources/notebooks/L1/1_ray_optics.ipynb.txt +++ b/build/html/_sources/notebooks/L1/1_ray_optics.ipynb.txt @@ -130,12 +130,48 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 102, "id": "fbf42d2d-ba72-4d79-b251-bf343a9c054c", "metadata": { "tags": [] }, "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -184,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 103, "id": "a7043a8d-8a5a-4b0a-9ec3-3c61e77665b1", "metadata": { "tags": [] @@ -241,33 +277,70 @@ { "data": { "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "81c9708e657a43299356d6d746905d25", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=50.0, continuous_update=False, description='Radius:', min=10.0, step=1…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", "
\n", + "\n", "\n" ], "text/plain": [ @@ -279,35 +352,51 @@ } ], "source": [ - "%%html\n", + "from ipywidgets import interact, FloatSlider\n", + "from IPython.display import display, HTML, Javascript\n", + "\n", + "# Define the function to update the circle radius\n", + "def update_circle_radius(radius):\n", + " display(Javascript(f\"\"\"\n", + " (function() {{\n", + " var circle = d3.select(\"#d3-circle\");\n", + " if(circle) circle.attr(\"r\", {radius});\n", + " }})();\n", + " \"\"\"))\n", + "\n", + "# Create the slider widget\n", + "slider = FloatSlider(\n", + " value=50,\n", + " min=10,\n", + " max=100,\n", + " step=1,\n", + " description='Radius:',\n", + " continuous_update=False\n", + ")\n", + "\n", + "# Display the slider and pass the update function as the callback\n", + "interact(update_circle_radius, radius=slider)\n", + "\n", + "# Define the HTML and JavaScript code for the initial D3.js circle\n", + "html_code = \"\"\"\n", "
\n", + "\n", "" + "\n", + "\"\"\"\n", + "\n", + "# Display the initial D3.js circle\n", + "display(HTML(html_code))" ] }, { diff --git a/build/html/notebooks/L1/1_ray_optics.html b/build/html/notebooks/L1/1_ray_optics.html index 90e783d..6740b77 100644 --- a/build/html/notebooks/L1/1_ray_optics.html +++ b/build/html/notebooks/L1/1_ray_optics.html @@ -217,7 +217,7 @@

Ray Optics

Law of reflection#

|

-

74410a67b2534d4f9009329c90514572

+

aac225b3eca74f0bb33ce989fda2deda

@@ -234,7 +234,7 @@

Law of reflection

Law of refraction#

|

-

5dacb075f2f74b528d720d4a439a7650

+

2698f2eb6e934a9bb5f8742afaa3de2e

@@ -249,7 +249,7 @@

Law of refraction\(\theta_1\) with the angle of the refracted ray \(\theta_2\).

With this law of refraction, there are a number of special situations, that occur. This is for example the total internal refraction. You can explore different situations with the short program below which gives you control over the refractive indices and the incident angles.

-
[89]:
+
[102]:
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
[92]:
+
[103]:
 
-
%%html
-<div id="d3-container"></div>
-<script>
-// Ensure D3.js is loaded
-if (d3) {
-    // Select the container
-    var container = d3.select("#d3-container");
-
-    // Append an SVG element to the container
-    var svg = container.append("svg")
-        .attr("width", 400)
-        .attr("height", 200);
-
-    // Append a circle to the SVG element
-    svg.append("circle")
-        .attr("cx", 100)
-        .attr("cy", 100)
-        .attr("r", 50)
-        .style("fill", "blue");
-
-    circle.transition()
-        .duration(10000) // 2 seconds
-        .attr("cx", 290) // End at the right side
-        .ease(d3.easeLinear); // Use a linear easing function
-
-} else {
-    console.error("D3.js is not loaded");
-}
-</script>
+
from ipywidgets import interact, FloatSlider
+from IPython.display import display, HTML, Javascript
+
+# Define the function to update the circle radius
+def update_circle_radius(radius):
+    display(Javascript(f"""
+        (function() {{
+            var circle = d3.select("#d3-circle");
+            if(circle) circle.attr("r", {radius});
+        }})();
+    """))
+
+# Create the slider widget
+slider = FloatSlider(
+    value=50,
+    min=10,
+    max=100,
+    step=1,
+    description='Radius:',
+    continuous_update=False
+)
+
+# Display the slider and pass the update function as the callback
+interact(update_circle_radius, radius=slider)
+
+# Define the HTML and JavaScript code for the initial D3.js circle
+html_code = """
+<div id="d3-container"></div>
+<script src="https://d3js.org/d3.v6.min.js"></script>
+<script>
+    var container = d3.select("#d3-container");
+    var svg = container.append("svg")
+        .attr("width", 200)
+        .attr("height", 200);
+    svg.append("circle")
+        .attr("id", "d3-circle")
+        .attr("cx", 100)
+        .attr("cy", 100)
+        .attr("r", 50)
+        .style("fill", "blue");
+</script>
+"""
+
+# Display the initial D3.js circle
+display(HTML(html_code))
 
@@ -339,44 +373,54 @@

Law of refraction

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Refraction on spherical boundary#

Many of the interesting situations of refraction occur on interfaces, which are curved. Lenses, for example, have curved surfaces and the angles of refraction therefore change depending on the position. We can model in the simplest case by a spherical surface or in 2D just by a circular interface. The diagram below shows the definition of such a situation.

|

-

05c275b8a6104130aadb74549604e00e

+

558c811cefab402b83315df907d7f0a8

diff --git a/build/html/notebooks/L1/1_ray_optics.ipynb b/build/html/notebooks/L1/1_ray_optics.ipynb index ec85e02..c2e94fa 100644 --- a/build/html/notebooks/L1/1_ray_optics.ipynb +++ b/build/html/notebooks/L1/1_ray_optics.ipynb @@ -130,12 +130,48 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 102, "id": "fbf42d2d-ba72-4d79-b251-bf343a9c054c", "metadata": { "tags": [] }, "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -184,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 103, "id": "a7043a8d-8a5a-4b0a-9ec3-3c61e77665b1", "metadata": { "tags": [] @@ -241,33 +277,70 @@ { "data": { "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "81c9708e657a43299356d6d746905d25", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=50.0, continuous_update=False, description='Radius:', min=10.0, step=1…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", "
\n", + "\n", "\n" ], "text/plain": [ @@ -279,35 +352,51 @@ } ], "source": [ - "%%html\n", + "from ipywidgets import interact, FloatSlider\n", + "from IPython.display import display, HTML, Javascript\n", + "\n", + "# Define the function to update the circle radius\n", + "def update_circle_radius(radius):\n", + " display(Javascript(f\"\"\"\n", + " (function() {{\n", + " var circle = d3.select(\"#d3-circle\");\n", + " if(circle) circle.attr(\"r\", {radius});\n", + " }})();\n", + " \"\"\"))\n", + "\n", + "# Create the slider widget\n", + "slider = FloatSlider(\n", + " value=50,\n", + " min=10,\n", + " max=100,\n", + " step=1,\n", + " description='Radius:',\n", + " continuous_update=False\n", + ")\n", + "\n", + "# Display the slider and pass the update function as the callback\n", + "interact(update_circle_radius, radius=slider)\n", + "\n", + "# Define the HTML and JavaScript code for the initial D3.js circle\n", + "html_code = \"\"\"\n", "
\n", + "\n", "" + "\n", + "\"\"\"\n", + "\n", + "# Display the initial D3.js circle\n", + "display(HTML(html_code))" ] }, { diff --git a/build/html/notebooks/L1/Lecture1.html b/build/html/notebooks/L1/Lecture1.html index 6d55ab5..eb82750 100644 --- a/build/html/notebooks/L1/Lecture1.html +++ b/build/html/notebooks/L1/Lecture1.html @@ -231,7 +231,7 @@

Geometrical Optics

Law of reflection#

|

-

0f1f40618ec74ff685f585593ae98d3c

+

21731832378f45ee8fb98edaeca2308b

diff --git a/build/html/searchindex.js b/build/html/searchindex.js index 1b895f0..e411c1a 100644 --- a/build/html/searchindex.js +++ b/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["course-info/assignments", "course-info/exam", "course-info/instructor", "course-info/resources", "course-info/schedule", "course-info/website", "index", "lectures/Intro/overview", "lectures/L1/assignment_1", "lectures/L1/overview_1", "notebooks/Intro/EditCells", "notebooks/Intro/Empty", "notebooks/Intro/Introduction2Jupyter", "notebooks/Intro/NotebookEditor", "notebooks/L1/1_ray_optics", "notebooks/L1/Lecture1", "notebooks/L1/spherical_surface"], "filenames": ["course-info/assignments.rst", "course-info/exam.rst", "course-info/instructor.rst", "course-info/resources.rst", "course-info/schedule.rst", "course-info/website.rst", "index.rst", "lectures/Intro/overview.rst", "lectures/L1/assignment_1.rst", "lectures/L1/overview_1.rst", "notebooks/Intro/EditCells.ipynb", "notebooks/Intro/Empty.ipynb", "notebooks/Intro/Introduction2Jupyter.ipynb", "notebooks/Intro/NotebookEditor.ipynb", "notebooks/L1/1_ray_optics.ipynb", "notebooks/L1/Lecture1.ipynb", "notebooks/L1/spherical_surface.ipynb"], "titles": ["Assignments", "Exams", "Instructor", "Resources", "Course Schedule", "This Website", "Welcome to the Introduction to Photonics 1!", "Overview", "Exercise 1", "Lecture Contents", "Entering code", "An empty notebook", "Introduction to Jupyter", "Notebook editor", "General Optics", "1. General Optics", "<no title>"], "terms": {"thi": [0, 1, 3, 6, 10, 11, 12, 13, 14, 15, 16], "i": [1, 4, 5, 6, 8, 10, 13, 14, 15], "websit": [3, 10], "physic": [3, 5, 6, 7, 14], "schedul": [], "assign": [4, 5], "exam": [], "resourc": 5, "molecular": 15, "nanophoton": [], "group": 1, "python": [5, 9, 10, 12], "document": 10, "tutori": [], "instructor": [], "overview": [], "introduct": [1, 3, 9], "what": [1, 14], "editor": 7, "kernel": [], "edit": [10, 12], "mode": [10, 14, 15], "command": 10, "keyboard": 10, "navig": [], "run": 12, "code": [0, 1, 5, 7, 12], "manag": [], "enter": [7, 13], "markdown": [7, 8, 12, 13], "basic": [1, 9, 12, 13], "head": [], "embed": 12, "latex": [8, 12], "equat": [12, 14, 15], "imag": [12, 14, 15], "video": [0, 4, 5], "content": [5, 10, 12, 13], "exercis": [], "index": [6, 14], "modul": [6, 9, 10, 14, 15], "search": 6, "page": [5, 6, 10, 11, 12, 13, 14, 15, 16], "The": [0, 1, 4, 5, 7, 8, 12, 13, 14, 15], "lectur": [0, 4, 5], "held": 0, "complet": [0, 5, 10, 12], "onlin": [0, 4, 5], "year": 0, "we": [0, 1, 4, 5, 6, 8, 9, 10, 13, 14, 15], "suppli": 0, "also": [0, 1, 4, 5, 10, 12, 14, 15], "problem": [0, 1], "set": [0, 13, 14, 15, 16], "everi": [0, 4, 5], "week": [0, 4, 5], "all": [0, 1, 5, 12, 14, 15], "student": [0, 1], "come": [0, 4, 14, 15], "jupyt": [0, 1, 5, 7, 8, 9, 10, 13], "notebook": [0, 1, 4, 5, 7, 9, 10, 14, 15, 16], "individu": [0, 1, 10, 12], "pleas": [0, 4, 5], "fill": [0, 14], "answer": 0, "your": [0, 1, 5, 10, 12, 13], "ar": [0, 1, 3, 5, 9, 10, 12, 13, 14, 15], "ask": [0, 5], "return": [0, 10, 12, 14], "befor": [0, 15], "tuesdai": [0, 4], "morn": 0, "you": [0, 1, 3, 4, 5, 8, 9, 10, 12, 13, 14], "receiv": 0, "web": [0, 5, 12], "address": [0, 8, 14], "our": [0, 5, 8], "server": [0, 4, 5, 8, 12], "well": [0, 3, 5, 8, 10, 12, 15], "login": [0, 5, 8], "password": [0, 5, 8], "find": [0, 1, 3, 5, 15], "below": [0, 3, 10, 13, 14, 15], "short": [0, 14, 15], "how": [0, 10, 15], "download": [0, 5], "close": [1, 5, 14, 15], "cours": [1, 3, 5, 6, 7, 15], "an": [1, 4, 5, 8, 10, 12, 13, 14, 15], "form": [1, 10, 12, 14], "final": [1, 12, 14], "project": [1, 5, 10, 15], "shall": [1, 15], "topic": [1, 6, 7, 14], "choic": 1, "one": [1, 6, 10, 13, 14, 15], "provid": [1, 8, 10, 12, 13, 14], "exampl": [1, 10, 14], "hand": 1, "each": [1, 5, 12, 14, 15], "requir": [1, 5, 15], "No": 1, "work": [1, 5, 10, 15], "allow": [1, 5, 12, 13, 14], "follow": [1, 5, 10, 13, 14, 15], "outlin": 1, "introduc": [1, 6], "cover": 1, "motiv": 1, "go": [1, 5, 10, 13, 14, 15], "do": [1, 10, 14, 15], "should": [1, 10], "theoret": 1, "descript": [1, 6, 14], "solv": [1, 14, 15], "result": [1, 12, 14], "discuss": [1, 3, 5, 14], "develop": 1, "anot": 1, "step": [1, 16], "It": [1, 5, 6, 8, 12, 14, 15], "import": [1, 10, 13, 14, 15, 16], "highlight": 1, "consequ": [1, 15], "summari": 1, "summar": 1, "notbook": 1, "grade": [1, 15], "accord": [1, 14], "common": [1, 14], "scheme": 1, "email": [2, 12], "lastnam": 2, "physik": 2, "uni": 2, "leipzig": 2, "de": 2, "prof": 2, "dr": 2, "frank": 2, "cicho": [2, 15], "linn\u00e9str": 2, "5": [2, 13, 14, 15, 16], "04103": 2, "offic": 2, "322": 2, "phone": 2, "0341": 2, "97": 2, "32571": 2, "There": [3, 10, 12, 13, 14, 15], "ton": 3, "addit": [3, 12, 15], "structur": 3, "net": [3, 10], "onli": [3, 10, 14, 15], "veri": [3, 14], "small": [3, 14, 15], "select": [3, 10, 13, 14], "comput": [3, 5, 6, 12, 14], "base": [3, 5, 12, 14, 15], "model": [3, 5, 14], "mona": [3, 5], "forum": [3, 5], "matplotlib": [3, 15, 16], "panda": 3, "scienc": [3, 6], "nice": [3, 10], "updat": [4, 5, 14, 15], "weekli": 4, "thu": [4, 12, 13, 15], "expect": 4, "start": [4, 5, 6, 9, 10, 12], "april": 4, "7th": 4, "1": [4, 10, 13, 14, 16], "30": [4, 7], "pm": [4, 15], "new": [4, 5, 10, 13, 15], "As": [4, 8, 14], "materi": [4, 14, 15], "avail": [4, 12, 13], "can": [4, 5, 9, 10, 12, 13, 14, 15], "back": [4, 12], "studi": 4, "whenev": 4, "suitabl": [4, 14], "add": [4, 10, 12, 16], "explain": [4, 5, 10], "detail": [4, 12], "explor": [4, 5, 6, 9, 14, 15], "especi": 4, "mybind": [4, 5, 13], "thei": [4, 10, 14], "help": [4, 10, 12], "finish": [4, 13], "contain": [5, 6, 12, 14, 15], "inform": [5, 14, 15], "yet": [5, 12, 14], "accompani": [5, 12], "mai": [5, 10, 12], "get": [5, 15], "along": [5, 15], "just": [5, 10, 12, 14, 15], "read": [5, 12], "And": [5, 10], "give": [5, 14, 15], "chanc": 5, "interact": [5, 6, 12, 15], "have": [5, 9, 10, 13, 14, 15], "creat": [5, 9, 10, 12, 15, 16], "which": [5, 10, 12, 13, 14, 15], "reach": [5, 14], "ha": [5, 12, 13, 14, 15], "differ": [5, 12, 13, 14, 15], "categori": 5, "hope": 5, "us": [5, 6, 10, 12, 13, 14, 15], "intens": [5, 15], "question": 5, "guid": 5, "from": [5, 6, 10, 11, 12, 13, 14, 15, 16], "here": [5, 10, 12, 14, 15], "sever": [5, 14], "learn": 5, "program": [5, 12, 14, 15], "therebi": 5, "make": [5, 8, 10, 13, 14, 15, 16], "some": [5, 10, 14], "great": [5, 10], "tool": 5, "like": [5, 10, 12, 13, 14, 15], "servic": [5, 12], "host": 5, "http": [5, 10, 14], "org": [5, 12, 14], "binder": 5, "offer": 5, "easi": [5, 10], "place": 5, "share": [5, 12, 15], "environ": [5, 9, 12], "everyon": 5, "when": [5, 10, 12, 13, 14], "notic": 5, "icon": 5, "indic": [5, 13, 14, 15], "webpag": 5, "rather": 5, "than": [5, 10, 15], "look": [5, 13, 14, 15, 16], "click": [5, 10], "open": [5, 9, 13, 15], "patient": 5, "wait": 5, "until": [5, 13], "temporarili": 5, "If": [5, 10, 12, 13, 14, 15], "show": [5, 12, 13, 14, 15, 16], "inact": 5, "long": 5, "connect": [5, 12, 13], "finsih": 5, "keep": 5, "copi": [5, 13], "ahead": 5, "empti": 5, "github": [5, 12], "com": 5, "collabor": 5, "includ": [5, 10, 12, 14], "version": [5, 12, 13], "control": [5, 10, 12, 13, 14, 15], "In": [5, 6, 10, 13], "upper": 5, "right": [5, 10, 13, 14, 15, 16], "corner": [5, 13], "link": [5, 10], "repositori": 5, "anaconda": 5, "packag": 5, "www": 5, "distribut": 5, "privid": 5, "want": [5, 10, 14, 15], "home": 5, "without": [5, 8, 12, 15], "access": [5, 10], "good": [5, 10], "instal": [5, 12], "languag": [9, 10, 12], "kind": [], "scientif": [], "engin": [], "task": [], "analyz": [], "plot": [12, 14, 15, 16], "data": [9, 12], "numer": [], "difficult": [14, 15], "even": 14, "imposs": [], "analyt": [], "freeli": [], "been": 13, "due": 15, "its": [10, 12, 14], "modular": [], "extend": [], "nearli": [], "infinit": [], "number": [14, 15], "purpos": [], "intend": [], "aim": [], "more": [6, 10, 13, 14, 15], "beginn": [], "advanc": [6, 13, 14], "user": [12, 13], "interest": [14, 15], "throughout": [], "function": [10, 14, 15], "curv": [14, 15], "fit": [], "write": [10, 12, 15], "file": 12, "encount": [], "dure": [], "anim": [], "insid": [], "simul": 10, "process": [12, 13], "mechan": [14, 15], "electrostat": [], "wave": [6, 7, 14], "quantum": 15, "optic": 6, "At": [], "end": [10, 14, 15], "machin": [], "now": [10, 14, 15], "becom": 10, "present": [], "comprehens": [], "list": [8, 10], "stimul": [], "curios": [], "slight": [], "syntax": [], "alwai": [14, 15], "refer": [], "3": [10, 14, 16], "standard": [], "experiment": 7, "iii": 7, "deal": 7, "two": [7, 10, 13, 14, 15], "major": 7, "electromagnet": [6, 7, 14], "particl": [7, 15], "environn": 7, "00": [7, 9], "05": 7, "09": [7, 9], "43": 7, "16": 7, "15": [7, 9, 15], "first": [8, 10, 14, 15], "jupyterhub": 8, "ip": 8, "yourself": 8, "familiar": 8, "interfac": [8, 12, 13, 14, 15], "correspond": [8, 14], "classic": [8, 15], "ani": [8, 12, 13, 14], "tab": [8, 10, 12], "string": 8, "dictionari": 8, "after": [9, 15], "hopefulli": 9, "abl": [9, 13], "variabl": [9, 15], "type": [9, 10, 12, 13, 14], "01": [9, 15], "23": 9, "oper": [9, 13], "comparison": 9, "42": 9, "22": [9, 15], "namespac": [9, 10], "45": [9, 15], "03": [9, 15], "wa": [10, 11, 12, 13, 14, 15, 16], "gener": [6, 10, 11, 12, 13, 16], "intro": [10, 11, 12, 13], "editcel": 10, "ipynb": [10, 11, 12, 13, 14, 15, 16], "pretti": 10, "cell": [10, 12, 13], "multipl": 10, "line": [10, 15], "press": [10, 13], "block": 10, "identifi": [10, 14], "belong": [10, 14, 15], "togeth": [10, 14], "ident": 10, "longer": 10, "later": [10, 14], "To": 10, "indent": 10, "either": 10, "whitespac": 10, "comment": 10, "ad": 10, "annot": 10, "someon": 10, "els": [10, 14, 15], "understand": [10, 12], "singl": [6, 10, 14, 15], "charact": 10, "front": 10, "over": [10, 12, 14], "same": [10, 15], "docstr": 10, "text": [10, 12, 13, 14, 15], "2": [10, 14, 15, 16], "typic": [10, 15], "def": [10, 14, 15], "x": [10, 13, 14, 15], "calcul": [10, 15], "argument": 10, "float": 10, "integ": [10, 14], "valu": 10, "y": [10, 13, 14, 15], "time": [10, 14, 15], "don": [10, 12], "t": [10, 12, 13, 14, 15], "forget": 10, "__main__": 10, "extrem": 10, "wai": [10, 12, 14, 15], "everyth": 10, "realli": [10, 14], "chang": [10, 13, 14, 15], "action": 10, "menu": [10, 13], "hardwar": [10, 13], "shortcut": [10, 13], "m": [10, 13, 14], "popular": 10, "markup": [10, 12], "superset": 10, "html": [10, 12, 14], "Its": 10, "specif": [10, 12, 14], "found": 10, "daringfirebal": 10, "render": [10, 12, 13], "unrend": 10, "see": [10, 13, 14], "format": [10, 12, 15], "represent": [10, 12], "": [10, 12, 13, 14], "raw": [10, 12, 13], "sourc": [10, 14, 15], "button": [10, 13], "shift": [10, 13, 15], "doubl": 10, "appear": 10, "put": 10, "ital": 10, "bold": 10, "build": 10, "nest": 10, "item": 10, "enumer": 10, "subitem": 10, "subsubitem": 10, "second": [10, 14, 15], "third": [10, 15], "anoth": [10, 13, 14], "sublist": 10, "blockquot": 10, "beauti": 10, "better": 10, "ugli": 10, "explicit": 10, "implicit": 10, "simpl": [6, 10, 12, 15], "complex": [6, 10, 14, 15], "complic": 10, "flat": 10, "spars": 10, "dens": 10, "readabl": 10, "count": 10, "special": [10, 14, 15], "case": [10, 14, 15], "aren": 10, "enough": 10, "break": [10, 14], "rule": 10, "although": 10, "practic": 10, "beat": [10, 15], "puriti": 10, "error": [10, 14, 15], "never": 10, "pass": 10, "silent": 10, "unless": 10, "explicitli": 10, "silenc": 10, "face": 10, "ambigu": 10, "refus": 10, "temptat": 10, "guess": 10, "prefer": 10, "obviou": 10, "re": [10, 15], "dutch": 10, "often": [10, 15], "implement": 10, "hard": 10, "bad": 10, "idea": 10, "honk": 10, "let": [10, 15], "those": 10, "shorthand": 10, "space": [10, 15], "emb": 10, "meant": [10, 12], "illustr": 10, "instead": 10, "execut": [10, 12, 13], "f": [10, 14], "other": [10, 12, 14, 15], "0": [10, 13, 14, 15, 16], "n": [10, 14, 15], "printf": 10, "hello": 10, "d": [10, 13, 14, 15], "4": [10, 14, 16], "courtesi": 10, "mathjax": 10, "mathemat": [10, 14, 15], "express": [10, 14, 15], "both": [10, 15], "inlin": 10, "e": [10, 13, 14, 15], "pi": [10, 14, 15], "displai": [10, 12, 14], "sum_": [10, 14, 15], "infti": [10, 15], "frac": [10, 14, 15], "surround": 10, "own": [10, 12], "directli": 10, "integr": [10, 14, 15], "altern": 10, "url": [10, 12], "src": [10, 14], "mov": 10, "movi": 10, "mp4": 10, "width": [10, 14, 15], "320": 10, "height": [10, 14], "200": [10, 14], "preload": 10, "store": 10, "local": [10, 15], "youtub": 10, "ipython": [10, 14], "9": [10, 14, 15], "youtubevideo": 10, "qllx32jugzi": 10, "600": [10, 15], "introduction2jupyt": 12, "A": [12, 13, 15], "browser": 12, "enabl": 12, "These": [12, 14], "self": 12, "record": 12, "convert": 12, "variou": 12, "system": [12, 14, 15], "git": 12, "nbviewer": 12, "combin": 12, "three": [12, 15], "compon": [12, 14], "applic": [6, 12, 14], "desktop": 12, "separ": [12, 13, 15], "given": [12, 14, 15], "output": 12, "handl": 12, "thing": 12, "widget": [12, 15], "introspect": 12, "visibl": 12, "input": 12, "rich": 12, "media": [6, 12], "object": [12, 14, 15], "brows": 12, "individual": 12, "arbitrari": 12, "oder": [12, 14, 15], "png": 12, "svg": [12, 14], "pdf": 12, "javascript": 12, "bind": 12, "visual": [12, 14], "reactiv": 12, "side": [12, 14, 15], "bound": 12, "almost": 12, "dedic": [12, 13], "100": [12, 13, 14], "julia": 12, "r": [12, 13, 14, 15], "rubi": 12, "haskel": 12, "scala": 12, "mani": [6, 12, 13, 14, 15], "default": 12, "pick": 12, "commun": 12, "json": 12, "zeromq": 12, "websocket": 12, "messag": 12, "protocol": 12, "describ": [12, 14, 15], "most": [12, 13, 15], "need": [12, 14, 15], "know": [12, 14], "about": 12, "session": 12, "filesystem": 12, "extens": 12, "easili": 12, "consist": 12, "linear": [6, 12, 14], "sequenc": 12, "live": 12, "narr": 12, "unformat": 12, "modif": 12, "nbconvert": 12, "intern": 12, "binari": 12, "encod": 12, "base64": 12, "them": [12, 14], "manipul": [6, 12, 13], "programmat": 12, "export": 12, "static": 12, "restructeredtext": 12, "slide": 12, "reveal": 12, "j": [12, 13, 14, 15], "util": 12, "furthermor": 12, "public": 12, "via": 12, "load": [12, 14], "notebookeditor": 13, "essenti": 13, "where": [13, 14], "jupyterlab": 13, "blue": [13, 14, 15], "border": 13, "prompt": 13, "area": 13, "normal": [13, 14, 15], "grei": 13, "io": 13, "devic": 13, "modal": 13, "optim": 13, "effici": 13, "usag": 13, "made": [13, 15], "possibl": [13, 15], "activ": 13, "rel": [13, 15], "few": 13, "entir": 13, "so": [13, 15], "ones": 13, "switch": 13, "mod": 13, "esc": 13, "k": [13, 14, 15], "current": [13, 15], "save": 13, "insert": [13, 14, 15], "abov": [13, 14, 15], "b": [13, 15], "pasteboard": 13, "cut": 13, "c": [13, 14, 15], "v": [13, 15], "past": 13, "delet": 13, "z": [13, 14, 15], "undo": 13, "interrupt": 13, "restart": 13, "bottom": 13, "panel": 13, "10": [13, 15], "print": 13, "coupl": [13, 15], "move": 13, "option": [13, 16], "call": [13, 14, 15], "top": [13, 14], "report": 13, "state": [13, 14, 15], "mean": [13, 14, 15], "readi": 13, "busi": 13, "tap": 13, "reconnect": 13, "try": [13, 15], "won": 13, "l1": [14, 15, 16], "1_ray_opt": 14, "ipywidget": 15, "pyplot": [15, 16], "plt": [14, 15, 16], "numpi": 15, "np": [14, 15], "deliv": 14, "simplest": [14, 15], "light": [6, 14], "propag": [6, 14, 15], "despit": 14, "simplif": 14, "power": [6, 14, 15], "howev": 14, "doe": 14, "insight": 14, "govern": 14, "geometr": 14, "therefor": [14, 15], "assumpt": [14, 15], "travel": [14, 15], "emit": [14, 15], "detect": [14, 15], "detector": [14, 15], "effect": 14, "medium": 14, "c_": [14, 15], "take": [14, 15], "distanc": [14, 15], "nd": [14, 15], "amount": [14, 15], "path": [14, 15], "length": [14, 15], "satisfi": [14, 15], "neither": 14, "speed": [14, 15], "nor": 14, "someth": 14, "consid": 14, "infer": 14, "observ": 14, "figur": [14, 15, 16], "angl": [14, 15, 16], "incid": [14, 15], "equal": [14, 15, 16], "begin": [14, 15], "theta_": [14, 15], "n_": [14, 15], "sin": [14, 15], "known": [14, 15], "snell": [14, 15], "relat": [14, 15], "theta_1": [14, 15], "theta_2": [14, 15], "With": [14, 15], "situat": [14, 15], "occur": [14, 15], "total": [], "fig": [14, 15, 16], "ax": [14, 15, 16], "subplot": [14, 15, 16], "figsiz": [14, 15], "canva": [14, 15], "header_vis": [14, 15], "fals": [14, 15], "n1": [14, 15], "n2": [14, 15], "90": [14, 15, 16], "remov": [14, 15], "old": 15, "cla": 15, "theta1": [14, 15, 16], "180": [15, 16], "theta2": [15, 16], "arcsin": [14, 15], "set_titl": [14, 15], "axvlin": [14, 15], "l": 15, "04": 15, "n_2": [14, 15], "n_1": [14, 15], "round": 15, "axhlin": 15, "color": [14, 15], "lw": 15, "quiver": 15, "co": [14, 15], "scale": 15, "pivot": 15, "tip": 15, "red": 15, "lens": [14, 15], "surfac": [14, 15], "depend": [14, 15], "posit": [14, 15], "2d": [14, 15], "circular": [14, 15], "diagram": [14, 15], "definit": [14, 15], "alpha": [14, 15], "delta": [14, 15], "tan": [14, 15], "z_2": [14, 15], "z_1": [14, 15], "gamma": 15, "approx": [14, 15], "replac": 15, "n_2r": [14, 15], "conjug": 15, "plane": 15, "quad": [14, 15], "rightarrow": [14, 15], "yz_2": [14, 15], "left": [14, 15], "z_2y": [14, 15], "independ": 15, "up": [14, 15], "point": [14, 15], "foundat": [6, 14, 15], "biconvex": 15, "len": [], "appli": [14, 15], "formula": 15, "twice": 15, "theta_t": [14, 15], "nr_1": [14, 15], "r_2": [14, 15], "r_1": [14, 15], "maker": [14, 15], "tell": [14, 15], "radii": [14, 15], "flip": [14, 15], "sign": [14, 15], "sinc": [14, 15], "direct": [14, 15], "y_2": [14, 15], "y_1": [14, 15], "magnif": [14, 15], "limit": [14, 15], "paraxi": [14, 15], "approxim": [14, 15], "6": [14, 15], "120": [14, 15], "dot": [14, 15], "ll": [14, 15], "rm": [14, 15], "radian": [14, 15], "true": [14, 15], "microscopi": [6, 14, 15], "80": [14, 15], "still": [14, 15], "lecture1": 15, "2020": 15, "violat": 15, "primari": 15, "abber": 15, "classif": 15, "seidel": 15, "1821": 15, "1896": 15, "coma": [14, 15], "astigmat": [14, 15], "field": [6, 15], "curvatur": [14, 15], "distort": 15, "2z_1": 15, "chromat": 15, "measur": 15, "correct": 15, "shape": [14, 15], "nowadai": 15, "adapt": [6, 15], "spatial": 15, "max": 15, "larger": [14, 15], "solut": 15, "theta_c": [14, 15], "glass": [14, 15], "41": [14, 15], "8": [14, 15], "water": 15, "48": 15, "7": 15, "diamond": 15, "24": 15, "h": 15, "_2": 15, "o": 15, "33": 15, "loss": 15, "central": 15, "core": 15, "clad": 15, "lower": [14, 15], "low": 15, "multimod": 15, "gradient": 15, "mostli": 15, "silica": 15, "sio": 15, "44": 15, "46": 15, "001": 15, "02": 15, "overlin": 15, "phi": [14, 15], "theta": 15, "theta_a": 15, "sqrt": [14, 15], "na": 15, "qquad": 15, "ay_1": 15, "cy_1": 15, "arrai": [14, 15], "rr": 15, "transfer": 15, "bmatrix": 15, "convex": 15, "concav": 15, "whole": 15, "precalcul": 15, "matric": 15, "element": [14, 15], "m_nm_": 15, "m_1": 15, "rememb": 15, "free": 15, "perfect": 15, "cloack": 15, "appar": 15, "immit": 15, "condit": 15, "afoc": 15, "except": 15, "nbsphinx": 15, "math": [14, 15], "f_2": 15, "f_1": 15, "f_1f_2": 15, "f_3": 15, "t_2": 15, "t_1": 15, "four": 15, "t_1t_2": 15, "t_4": 15, "f_4": 15, "t_3": 15, "2t_1": 15, "2f_2": 15, "vec": 15, "op": 15, "int_a": 15, "mathrm": 15, "taken": 15, "proporton": 15, "extremum": 15, "neighbor": 15, "minimum": 15, "maximum": 15, "inflect": 15, "usual": 15, "pmatrix": 15, "y_0": 15, "opl": 15, "split": 15, "l_1": 15, "l_2": 15, "beta": 15, "equiv": 15, "2r_2": 15, "2f": [14, 15], "must": 15, "converg": 15, "global": 15, "nabla": 15, "trajectori": 15, "variat": [14, 15], "calculu": 15, "dx": 15, "partial": 15, "dy": 15, "dz": 15, "hspace": 15, "9cm": 15, "parametr": 15, "const": 15, "straight": 15, "selfoc": 15, "n_0": 15, "2y": 15, "parabol": 15, "profil": 15, "theta_0": 15, "squar": 15, "potenti": 15, "magnifi": 15, "simplifi": 15, "behind": 15, "virtual": 15, "real": 15, "construct": 15, "2x": 15, "da": 15, "aa": 15, "cosh": 15, "sinh": 15, "x_": 15, "y_": 15, "check": [14, 15], "veloc": 15, "horizont": 15, "n_h": 15, "newton": 15, "dt": 15, "u": 15, "coulomb": 15, "q": 15, "epsilon_0": 15, "r_": 15, "rf": 15, "chi": 15, "photon": 15, "prf": 15, "zeta": 15, "hbar": 15, "lambda": 15, "_k": 15, "wavelength": 15, "character": 15, "c_0": 15, "2u": 15, "superposit": 15, "u_1": 15, "u_2": 15, "a_1u_1": 15, "a_2u_2": 15, "langl": 15, "rangl": 15, "averag": 15, "cycl": 15, "nm": 15, "omega": 15, "amplitud": 15, "frequenc": [14, 15], "nu": 15, "phase": 15, "helmholtz": 15, "arg": 15, "wavefront": [14, 15], "ikr": 15, "outward": 15, "inward": 15, "_0": 15, "origin": [14, 15], "fresnel": 15, "axi": [14, 15], "taylor": 15, "align": 15, "2z": 15, "ikz": 15, "ik": 15, "kz": 15, "4z": 15, "n_f": 15, "2_m": 15, "theta_m": 15, "wavevector": 15, "nk_0": 15, "stai": 15, "lambda_0": 15, "_1": 15, "k_": 15, "1x": 15, "k_1": 15, "k_2": 15, "1z": 15, "_3": 15, "n_1k_0": 15, "k_3": 15, "n_2k_0": 15, "3x": 15, "tangenti": 15, "conserv": 15, "repres": [14, 15], "ik_0": 15, "label": [14, 15], "magnitud": 15, "k_0": 15, "ref": 15, "2a": 15, "imaginari": 15, "part": 15, "zero": 15, "indenpend": 15, "vari": 15, "slowli": 15, "eikon": 15, "proport": 15, "transmitt": 15, "ikd": 15, "thick": 15, "air": [14, 15], "d_0": 15, "h_0": 15, "ik_0d_0": 15, "valid": 15, "big": 15, "2r": 15, "ink_0d_0": 15, "constant": 15, "transform": [14, 15], "paraboloid": 15, "center": [15, 16], "diffract": 15, "grate": 15, "transmit": 15, "sampl": 15, "mu": 15, "camera": 15, "_": 15, "cam": 15, "int": 15, "i2": 15, "prime": 15, "contrast": 15, "dpc": 15, "i_t": 15, "i_b": 15, "superpos": 15, "i_1": 15, "i_2": 15, "u_1u_2": 15, "phi_1": 15, "phi_2": 15, "i_1i_2": 15, "i_0": 15, "i_": 15, "min": [14, 15], "translat": 15, "2i_0": 15, "exist": 15, "monochromat": 15, "u_m": 15, "i_3": 15, "between": 15, "seri": [6, 15], "im": 15, "peak": 15, "bar": 15, "mi_0": 15, "hu_1": 15, "u_3": 15, "2u_1": 15, "4r": 15, "ge": 15, "tild": 15, "finess": 15, "mathcal": 15, "simeq": 15, "2nd": 15, "spectral": 15, "rang": [14, 15], "interfer": 15, "laser": 15, "caviti": 15, "fabri": 15, "perot": 15, "interferomet": 15, "digit": 15, "holographi": 15, "track": 15, "domain": 15, "nu_1": 15, "nu_2": 15, "odd": 15, "2l": 15, "nu_q": 15, "nu_0": 15, "nu_f": 15, "interval": 15, "sum": [14, 15], "phasor": 15, "again": 15, "nu_ft": 15, "t_f": 15, "puls": 15, "ghz": 15, "1000": [14, 15], "lock": 15, "tau": 15, "comb": 15, "far": 15, "u_0": 15, "envelop": 15, "nabla_t": 15, "i2k": 15, "helmholz": 15, "2_t": 15, "a_1": 15, "rho": [14, 15], "xi": 15, "iz_0": 15, "z_0": 15, "rayleigh": 15, "w": 15, "radiu": [14, 15, 16], "a_0": 15, "w_0": 15, "paramet": 15, "perp": 15, "gg": 15, "invers": 15, "int_0": 15, "within": 15, "certain": [14, 15], "rho_0": 15, "86": 15, "99": 15, "waist": 15, "spot": 15, "size": 15, "theta_0z": 15, "increas": 15, "linearli": 15, "larg": 15, "diverg": 15, "simlarli": 15, "slit": 15, "heisenberg": 15, "depth": 15, "focu": 15, "2z_0": 15, "additon": 15, "retard": 15, "guoi": 15, "v_p": 15, "arctan": 15, "2_0": 15, "mw_0": 15, "locat": [14, 15], "m_r": 15, "q_2": 15, "aq_1": 15, "cq_1": 15, "abcd": 15, "q_1": 15, "focus": 15, "2_2": 15, "w_2": 15, "focal": 15, "non": [6, 14, 15], "g": 15, "u_": 15, "h_m": 15, "h_n": 15, "hermit": 15, "polynomi": 15, "h_1": 15, "20": 15, "h_2": 15, "wavefunct": 15, "mirror": 15, "l_p": 15, "il": 15, "2p": 15, "laguerr": 15, "radial": [14, 15], "azimuth": [14, 15], "neg": [14, 15], "helic": 15, "topolog": 15, "charg": 15, "gauss": 15, "electr": 15, "magnet": 15, "vector": 15, "maxwel": 15, "varepsilon_0": 15, "mu_0": 15, "36": 15, "permitt": 15, "permeabl": 15, "varepsilon": 15, "alreadi": [14, 15], "_0e": 15, "transvers": 15, "energi": 15, "densiti": 15, "u_b": 15, "flow": [6, 15], "poynt": 15, "rangle_t": 15, "e_0": 15, "eta_0": 15, "mu_0c_0": 15, "377": 15, "imped": 15, "vacuum": 15, "radiat": 15, "pressur": 15, "electron": 15, "cloud": 15, "displac": 15, "against": 15, "nucleu": 15, "dipol": 15, "elementari": 15, "11": 15, "75": 15, "13": 15, "mm": 15, "atom": 15, "glanc": 15, "per": 15, "unit": [14, 15], "volum": 15, "hat": 15, "g_b": 15, "oint_": 15, "q_b": 15, "int_v": 15, "dv": 15, "rho_b": 15, "nq": 15, "flux": 15, "assum": [14, 15], "rest": 15, "orient": 15, "ionic": 15, "degener": 15, "propto": 15, "histori": 15, "p_i": 15, "sum_j": 15, "chi_": 15, "ij": 15, "e_j": 15, "d_i": 15, "varepsilon_": 15, "int_": 15, "a_2": 15, "a_3": 15, "e_": 15, "e_a": 15, "delai": 15, "nfrac": 15, "sim": 15, "plate": 15, "suscept": 15, "scalar": 15, "varepsilon_r": 15, "damp": 15, "harmon": 15, "oscil": 15, "ddot": 15, "sigma": 15, "omega_0": 15, "x_0": 15, "respons": 15, "eta": 15, "q_e": 15, "nq_e": 15, "polariz": 15, "chi_0": 15, "treatment": 15, "ne": 15, "f_j": 15, "omega_j": 15, "sigma_j": 15, "strength": 15, "f_": 15, "12": [14, 15], "m_l": 15, "hbar\u00b2": 15, "e_2": 15, "e_1": 15, "lorentz": 15, "kappa": 15, "2i": 15, "2k_0": 15, "coeffici": 15, "weakli": 15, "absorb": 15, "dn": 15, "intim": 15, "stem": 15, "polarizazit": 15, "a_x": 15, "_x": 15, "a_i": 15, "_y": 15, "phi_x": 15, "phi_i": 15, "e_x": 15, "e_i": 15, "e_xe_i": 15, "a_xa_i": 15, "half": 15, "2a_xa_i": 15, "circ": 15, "ellipt": 15, "neq": 15, "formal": 15, "j_1": 15, "j_2": 15, "a_": 15, "1y": 15, "determin": 15, "under": [14, 15], "rai": 6, "facet": 6, "research": 6, "involv": [6, 14], "propgat": 6, "fundament": 6, "matter": 6, "disord": 6, "quanta": 6, "superresolut": 6, "fastest": 6, "grow": 6, "fourier": 6, "anisotrop": 6, "lai": 6, "patch": 16, "defin": [14, 16], "arc": 16, "degre": [14, 16], "add_patch": 16, "aspect": 16, "set_aspect": 16, "set_xlim": 16, "set_ylim": 16, "draw": 14, "further": 14, "hit": 14, "nonlinear": 14, "angular": 14, "obtain": 14, "expand": 14, "bracket": 14, "lead": 14, "note": 14, "seen": 14, "latter": 14, "actual": 14, "level": 14, "deriv": 14, "orthonorm": 14, "wide": 14, "did": 14, "disk": 14, "particularli": 14, "becaus": 14, "orthogon": 14, "inner": 14, "product": 14, "circl": 14, "decompos": 14, "polar": 14, "coordin": 14, "z_n": 14, "r_n": 14, "geq": 14, "leq": 14, "2k": 14, "method": 14, "being": 14, "noll": 14, "pair": 14, "order": 14, "ophthalmologi": 14, "human": 14, "ey": 14, "decomposit": 14, "simpler": 14, "defocu": 14, "etc": 14, "radial_polynomi": 14, "zeros_lik": 14, "ab": 14, "factori": 14, "zernike_polynomi": 14, "linspac": 14, "400": 14, "xx": 14, "yy": 14, "meshgrid": 14, "arctan2": 14, "mask": 14, "nan": 14, "flatten": 14, "imshow": 14, "extent": 14, "off": 14, "tight_layout": 14, "spherical_surfac": 16, "outgo": 14, "characterist": 14, "onto": 14, "revers": 14, "anymor": 14, "out": 14, "phenomenon": 14, "fantast": 14, "54": 14, "snell_law": 14, "theta1_degre": 14, "theta1_radian": 14, "sin_theta2": 14, "theta2_radian": 14, "n1_glass": 14, "n2_air": 14, "theta2_glass_to_air": 14, "dpi": 14, "150": 14, "linestyl": 14, "critic": 14, "\u03b8c": 14, "xlabel": 14, "\u03b8_1": 14, "ylabel": 14, "\u03b8_2": 14, "xlim": 14, "ylim": 14, "grid": 14, "61": 14, "62": [], "html_code": [], "id": 14, "mycanva": [], "style": 14, "1px": [], "solid": [], "000000": [], "support": [], "html5": [], "tag": [], "script": 14, "var": 14, "getelementbyid": [], "ctx": [], "getcontext": [], "rectangl": [], "fillstyl": [], "0000ff": [], "fillrect": [], "63": [], "mybutton": [], "me": [], "handlebuttonclick": [], "alert": [], "addeventlisten": [], "64": [], "createel": [], "cdnj": [], "cloudflar": [], "ajax": [], "lib": [], "d3": 14, "appendchild": [], "consol": 14, "log": [], "window": [], "65": [], "svg_script": [], "append": 14, "attr": 14, "300": [], "stroke": [], "grai": [], "cyan": [], "130": [], "cx": 14, "cy": 14, "transit": 14, "durat": 14, "10000": 14, "69": [], "load_d3_in_cell_output": 14, "d3j": 14, "v6": 14, "get_ipython": 14, "event": 14, "regist": 14, "pre_run_cel": 14, "70": [], "div": 14, "ensur": 14, "50": 14, "89": 14, "92": 14, "290": 14, "eas": 14, "easelinear": 14}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"welcom": 6, "experiment": [], "physik": [], "3": 15, "cours": 4, "inform": [], "jupyt": 12, "notebook": [11, 12, 13], "lectur": [6, 9], "1": [6, 8, 15], "indic": 6, "tabl": 6, "assign": 0, "exam": 1, "instructor": 2, "resourc": 3, "molecular": 3, "nanophoton": 3, "group": 3, "python": 3, "document": [3, 12], "tutori": 3, "schedul": 4, "thi": 5, "websit": 5, "introduct": [6, 12], "photon": 6, "overview": 7, "exercis": 8, "content": 9, "enter": 10, "code": [10, 13], "markdown": 10, "basic": 10, "head": 10, "embed": 10, "latex": 10, "equat": 10, "imag": 10, "video": 10, "an": 11, "empti": 11, "what": [12, 15], "i": 12, "editor": [12, 13], "kernel": [12, 13], "edit": 13, "mode": 13, "command": 13, "keyboard": 13, "navig": 13, "run": 13, "manag": 13, "gener": [14, 15], "optic": [14, 15], "rai": [14, 15], "law": [14, 15], "reflect": [14, 15], "refract": [14, 15], "spheric": [14, 15], "boundari": [14, 15], "geometr": 15, "total": [14, 15], "intern": [14, 15], "guid": 15, "light": 15, "fiber": 15, "step": 15, "index": 15, "meridion": 15, "skew": 15, "numer": 15, "apertur": 15, "matrix": 15, "For": 15, "exampl": 15, "cloak": 15, "fermat": 15, "": 15, "principl": 15, "thin": 15, "len": [14, 15], "formul": 15, "differenti": 15, "form": 15, "compon": 15, "grin": 15, "you": 15, "should": 15, "know": 15, "mirag": 15, "effect": 15, "over": 15, "hot": 15, "street": 15, "bf": 15, "f": 15, "m": 15, "cdot": 15, "correspond": 15, "quantiti": 15, "momentum": 15, "tweezer": 15, "wave": 15, "gaussian": 15, "beam": 15, "propierti": 15, "transmiss": 15, "through": 15, "higher": 15, "order": 15, "cylindr": 15, "coordin": 15, "electromagnet": 15, "dielectr": 15, "media": 15, "linear": 15, "nondispers": 15, "homogen": 15, "isotrop": 15, "inhomogen": 15, "anisotrop": 15, "dispers": 15, "nonlinear": 15, "microscop": 15, "model": 15, "p": 15, "reson": 15, "medium": 15, "absorpt": 15, "kramer": 15, "kronig": 15, "4": 15, "polar": 15, "conjug": 14, "plane": 14, "biconvex": 14, "aberr": 14, "character": 14, "zernik": 14, "polynomi": 14}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"Assignments": [[0, "assignments"]], "Exams": [[1, "exams"]], "Instructor": [[2, "instructor"]], "Resources": [[3, "resources"]], "Molecular Nanophotonics Group": [[3, "molecular-nanophotonics-group"]], "Python Documentation": [[3, "python-documentation"]], "Python Tutorials": [[3, "python-tutorials"]], "Course Schedule": [[4, "course-schedule"]], "This Website": [[5, "this-website"]], "Overview": [[7, "overview"]], "Exercise 1": [[8, "exercise-1"]], "Lecture Contents": [[9, "lecture-contents"]], "Entering code": [[10, "Entering-code"]], "Entering Markdown": [[10, "Entering-Markdown"]], "Markdown basics": [[10, "Markdown-basics"]], "Headings": [[10, "Headings"]], "Embedded code": [[10, "Embedded-code"]], "LaTeX equations": [[10, "LaTeX-equations"]], "Images": [[10, "Images"]], "Videos": [[10, "Videos"]], "An empty notebook": [[11, "An-empty-notebook"]], "Introduction to Jupyter": [[12, "Introduction-to-Jupyter"]], "What is Jupyter Notebook?": [[12, "What-is-Jupyter-Notebook?"]], "Notebook editor": [[12, "Notebook-editor"], [13, "Notebook-editor"]], "Kernels": [[12, "Kernels"]], "Notebook documents": [[12, "Notebook-documents"]], "Edit mode": [[13, "Edit-mode"]], "Command mode": [[13, "Command-mode"]], "Keyboard navigation": [[13, "Keyboard-navigation"]], "Running code": [[13, "Running-code"]], "Managing the kernel": [[13, "Managing-the-kernel"]], "Welcome to the Introduction to Photonics 1!": [[6, "welcome-to-the-introduction-to-photonics-1"]], "Lecture 1:": [[6, null]], "Indices and tables": [[6, "indices-and-tables"]], "General Optics": [[14, "General-Optics"]], "Ray Optics": [[14, "Ray-Optics"]], "Law of reflection": [[14, "Law-of-reflection"], [15, "Law-of-reflection"]], "Law of refraction": [[14, "Law-of-refraction"], [15, "Law-of-refraction"]], "Refraction on spherical boundary": [[14, "Refraction-on-spherical-boundary"], [15, "Refraction-on-spherical-boundary"]], "Conjugated Planes": [[14, "Conjugated-Planes"]], "Biconvex Lens": [[14, "Biconvex-Lens"]], "Aberration Characterization and Zernike Polynomials": [[14, "Aberration-Characterization-and-Zernike-Polynomials"]], "Total Internal Reflection": [[14, "Total-Internal-Reflection"]], "1. General Optics": [[15, "1.-General-Optics"]], "Geometrical Optics": [[15, "Geometrical-Optics"]], "Total internal reflection": [[15, "Total-internal-reflection"]], "Guiding light fibers": [[15, "Guiding-light-fibers"]], "Step-index fiber": [[15, "Step-index-fiber"]], "Meridional ray": [[15, "Meridional-ray"]], "Skewed ray": [[15, "Skewed-ray"]], "Numerical aperture": [[15, "Numerical-aperture"]], "Matrix Optics": [[15, "Matrix-Optics"], [15, "id5"]], "For example: Optical cloaking": [[15, "For-example:-Optical-cloaking"]], "Fermat\u2019s Principle": [[15, "Fermat's-Principle"]], "Refraction": [[15, "Refraction"]], "Thin lens": [[15, "Thin-lens"]], "Formulation of Fermat\u2019s principle": [[15, "Formulation-of-Fermat's-principle"]], "Differential form in components": [[15, "Differential-form-in-components"]], "GRIN lens": [[15, "GRIN-lens"]], "What you should know:": [[15, "What-you-should-know:"]], "Mirage effect over a hot street": [[15, "Mirage-effect-over-a-hot-street"]], "{\\bf F = m \\cdot a} optics": [[15, "{\\bf-F-=-m-\\cdot-a}-optics"]], "Corresponding quantities": [[15, "Corresponding-quantities"]], "Ray optics and momentum": [[15, "Ray-optics-and-momentum"]], "Optical Tweezers": [[15, "Optical-Tweezers"]], "Wave Optics": [[15, "Wave-Optics"]], "Gaussian beam": [[15, "Gaussian-beam"]], "Propierties": [[15, "Propierties"]], "Transmission through a lens": [[15, "Transmission-through-a-lens"]], "Higher order Gaussian beams": [[15, "Higher-order-Gaussian-beams"]], "Cylindrical coordinates": [[15, "Cylindrical-coordinates"]], "1.3 Electromagnetic Optics": [[15, "1.3-Electromagnetic-Optics"]], "Dielectric media": [[15, "Dielectric-media"]], "linear media": [[15, "linear-media"]], "nondispersive media": [[15, "nondispersive-media"]], "homogeneous media": [[15, "homogeneous-media"]], "isotropic media": [[15, "isotropic-media"]], "inhomogeneous media": [[15, "inhomogeneous-media"]], "anisotropic media": [[15, "anisotropic-media"]], "dispersive media": [[15, "dispersive-media"]], "nonlinear media": [[15, "nonlinear-media"]], "Linear, nondispersive, homogeneous, isotropic media": [[15, "Linear,-nondispersive,-homogeneous,-isotropic-media"]], "microscopic model of P": [[15, "microscopic-model-of-P"]], "resonant medium": [[15, "resonant-medium"]], "dispersion": [[15, "dispersion"]], "absorption and dispersion": [[15, "absorption-and-dispersion"]], "Kramers\u2013Kronig": [[15, "Kramers\u2013Kronig"]], "1.4 Polarization Optics": [[15, "1.4-Polarization-Optics"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["course-info/assignments", "course-info/exam", "course-info/instructor", "course-info/resources", "course-info/schedule", "course-info/website", "index", "lectures/Intro/overview", "lectures/L1/assignment_1", "lectures/L1/overview_1", "notebooks/Intro/EditCells", "notebooks/Intro/Empty", "notebooks/Intro/Introduction2Jupyter", "notebooks/Intro/NotebookEditor", "notebooks/L1/1_ray_optics", "notebooks/L1/Lecture1", "notebooks/L1/spherical_surface"], "filenames": ["course-info/assignments.rst", "course-info/exam.rst", "course-info/instructor.rst", "course-info/resources.rst", "course-info/schedule.rst", "course-info/website.rst", "index.rst", "lectures/Intro/overview.rst", "lectures/L1/assignment_1.rst", "lectures/L1/overview_1.rst", "notebooks/Intro/EditCells.ipynb", "notebooks/Intro/Empty.ipynb", "notebooks/Intro/Introduction2Jupyter.ipynb", "notebooks/Intro/NotebookEditor.ipynb", "notebooks/L1/1_ray_optics.ipynb", "notebooks/L1/Lecture1.ipynb", "notebooks/L1/spherical_surface.ipynb"], "titles": ["Assignments", "Exams", "Instructor", "Resources", "Course Schedule", "This Website", "Welcome to the Introduction to Photonics 1!", "Overview", "Exercise 1", "Lecture Contents", "Entering code", "An empty notebook", "Introduction to Jupyter", "Notebook editor", "General Optics", "1. General Optics", "<no title>"], "terms": {"thi": [0, 1, 3, 6, 10, 11, 12, 13, 14, 15, 16], "i": [1, 4, 5, 6, 8, 10, 13, 14, 15], "websit": [3, 10], "physic": [3, 5, 6, 7, 14], "schedul": [], "assign": [4, 5], "exam": [], "resourc": 5, "molecular": 15, "nanophoton": [], "group": 1, "python": [5, 9, 10, 12], "document": 10, "tutori": [], "instructor": [], "overview": [], "introduct": [1, 3, 9], "what": [1, 14], "editor": 7, "kernel": [], "edit": [10, 12], "mode": [10, 14, 15], "command": 10, "keyboard": 10, "navig": [], "run": 12, "code": [0, 1, 5, 7, 12, 14], "manag": [], "enter": [7, 13], "markdown": [7, 8, 12, 13], "basic": [1, 9, 12, 13], "head": [], "embed": 12, "latex": [8, 12], "equat": [12, 14, 15], "imag": [12, 14, 15], "video": [0, 4, 5], "content": [5, 10, 12, 13], "exercis": [], "index": [6, 14], "modul": [6, 9, 10, 14, 15], "search": 6, "page": [5, 6, 10, 11, 12, 13, 14, 15, 16], "The": [0, 1, 4, 5, 7, 8, 12, 13, 14, 15], "lectur": [0, 4, 5], "held": 0, "complet": [0, 5, 10, 12], "onlin": [0, 4, 5], "year": 0, "we": [0, 1, 4, 5, 6, 8, 9, 10, 13, 14, 15], "suppli": 0, "also": [0, 1, 4, 5, 10, 12, 14, 15], "problem": [0, 1], "set": [0, 13, 14, 15, 16], "everi": [0, 4, 5], "week": [0, 4, 5], "all": [0, 1, 5, 12, 14, 15], "student": [0, 1], "come": [0, 4, 14, 15], "jupyt": [0, 1, 5, 7, 8, 9, 10, 13], "notebook": [0, 1, 4, 5, 7, 9, 10, 14, 15, 16], "individu": [0, 1, 10, 12], "pleas": [0, 4, 5], "fill": [0, 14], "answer": 0, "your": [0, 1, 5, 10, 12, 13], "ar": [0, 1, 3, 5, 9, 10, 12, 13, 14, 15], "ask": [0, 5], "return": [0, 10, 12, 14], "befor": [0, 15], "tuesdai": [0, 4], "morn": 0, "you": [0, 1, 3, 4, 5, 8, 9, 10, 12, 13, 14], "receiv": 0, "web": [0, 5, 12], "address": [0, 8, 14], "our": [0, 5, 8], "server": [0, 4, 5, 8, 12], "well": [0, 3, 5, 8, 10, 12, 15], "login": [0, 5, 8], "password": [0, 5, 8], "find": [0, 1, 3, 5, 15], "below": [0, 3, 10, 13, 14, 15], "short": [0, 14, 15], "how": [0, 10, 15], "download": [0, 5], "close": [1, 5, 14, 15], "cours": [1, 3, 5, 6, 7, 15], "an": [1, 4, 5, 8, 10, 12, 13, 14, 15], "form": [1, 10, 12, 14], "final": [1, 12, 14], "project": [1, 5, 10, 15], "shall": [1, 15], "topic": [1, 6, 7, 14], "choic": 1, "one": [1, 6, 10, 13, 14, 15], "provid": [1, 8, 10, 12, 13, 14], "exampl": [1, 10, 14], "hand": 1, "each": [1, 5, 12, 14, 15], "requir": [1, 5, 15], "No": 1, "work": [1, 5, 10, 15], "allow": [1, 5, 12, 13, 14], "follow": [1, 5, 10, 13, 14, 15], "outlin": 1, "introduc": [1, 6], "cover": 1, "motiv": 1, "go": [1, 5, 10, 13, 14, 15], "do": [1, 10, 14, 15], "should": [1, 10], "theoret": 1, "descript": [1, 6, 14], "solv": [1, 14, 15], "result": [1, 12, 14], "discuss": [1, 3, 5, 14], "develop": 1, "anot": 1, "step": [1, 14, 16], "It": [1, 5, 6, 8, 12, 14, 15], "import": [1, 10, 13, 14, 15, 16], "highlight": 1, "consequ": [1, 15], "summari": 1, "summar": 1, "notbook": 1, "grade": [1, 15], "accord": [1, 14], "common": [1, 14], "scheme": 1, "email": [2, 12], "lastnam": 2, "physik": 2, "uni": 2, "leipzig": 2, "de": 2, "prof": 2, "dr": 2, "frank": 2, "cicho": [2, 15], "linn\u00e9str": 2, "5": [2, 13, 14, 15, 16], "04103": 2, "offic": 2, "322": 2, "phone": 2, "0341": 2, "97": 2, "32571": 2, "There": [3, 10, 12, 13, 14, 15], "ton": 3, "addit": [3, 12, 15], "structur": 3, "net": [3, 10], "onli": [3, 10, 14, 15], "veri": [3, 14], "small": [3, 14, 15], "select": [3, 10, 13, 14], "comput": [3, 5, 6, 12, 14], "base": [3, 5, 12, 14, 15], "model": [3, 5, 14], "mona": [3, 5], "forum": [3, 5], "matplotlib": [3, 15, 16], "panda": 3, "scienc": [3, 6], "nice": [3, 10], "updat": [4, 5, 14, 15], "weekli": 4, "thu": [4, 12, 13, 15], "expect": 4, "start": [4, 5, 6, 9, 10, 12], "april": 4, "7th": 4, "1": [4, 10, 13, 14, 16], "30": [4, 7], "pm": [4, 15], "new": [4, 5, 10, 13, 15], "As": [4, 8, 14], "materi": [4, 14, 15], "avail": [4, 12, 13], "can": [4, 5, 9, 10, 12, 13, 14, 15], "back": [4, 12], "studi": 4, "whenev": 4, "suitabl": [4, 14], "add": [4, 10, 12, 16], "explain": [4, 5, 10], "detail": [4, 12], "explor": [4, 5, 6, 9, 14, 15], "especi": 4, "mybind": [4, 5, 13], "thei": [4, 10, 14], "help": [4, 10, 12], "finish": [4, 13], "contain": [5, 6, 12, 14, 15], "inform": [5, 14, 15], "yet": [5, 12, 14], "accompani": [5, 12], "mai": [5, 10, 12], "get": [5, 15], "along": [5, 15], "just": [5, 10, 12, 14, 15], "read": [5, 12], "And": [5, 10], "give": [5, 14, 15], "chanc": 5, "interact": [5, 6, 12, 14, 15], "have": [5, 9, 10, 13, 14, 15], "creat": [5, 9, 10, 12, 14, 15, 16], "which": [5, 10, 12, 13, 14, 15], "reach": [5, 14], "ha": [5, 12, 13, 14, 15], "differ": [5, 12, 13, 14, 15], "categori": 5, "hope": 5, "us": [5, 6, 10, 12, 13, 14, 15], "intens": [5, 15], "question": 5, "guid": 5, "from": [5, 6, 10, 11, 12, 13, 14, 15, 16], "here": [5, 10, 12, 14, 15], "sever": [5, 14], "learn": 5, "program": [5, 12, 14, 15], "therebi": 5, "make": [5, 8, 10, 13, 14, 15, 16], "some": [5, 10, 14], "great": [5, 10], "tool": 5, "like": [5, 10, 12, 13, 14, 15], "servic": [5, 12], "host": 5, "http": [5, 10, 14], "org": [5, 12, 14], "binder": 5, "offer": 5, "easi": [5, 10], "place": 5, "share": [5, 12, 15], "environ": [5, 9, 12], "everyon": 5, "when": [5, 10, 12, 13, 14], "notic": 5, "icon": 5, "indic": [5, 13, 14, 15], "webpag": 5, "rather": 5, "than": [5, 10, 15], "look": [5, 13, 14, 15, 16], "click": [5, 10], "open": [5, 9, 13, 15], "patient": 5, "wait": 5, "until": [5, 13], "temporarili": 5, "If": [5, 10, 12, 13, 14, 15], "show": [5, 12, 13, 14, 15, 16], "inact": 5, "long": 5, "connect": [5, 12, 13], "finsih": 5, "keep": 5, "copi": [5, 13], "ahead": 5, "empti": 5, "github": [5, 12], "com": 5, "collabor": 5, "includ": [5, 10, 12, 14], "version": [5, 12, 13], "control": [5, 10, 12, 13, 14, 15], "In": [5, 6, 10, 13], "upper": 5, "right": [5, 10, 13, 14, 15, 16], "corner": [5, 13], "link": [5, 10], "repositori": 5, "anaconda": 5, "packag": 5, "www": 5, "distribut": 5, "privid": 5, "want": [5, 10, 14, 15], "home": 5, "without": [5, 8, 12, 15], "access": [5, 10], "good": [5, 10], "instal": [5, 12], "languag": [9, 10, 12], "kind": [], "scientif": [], "engin": [], "task": [], "analyz": [], "plot": [12, 14, 15, 16], "data": [9, 12], "numer": [], "difficult": [14, 15], "even": 14, "imposs": [], "analyt": [], "freeli": [], "been": 13, "due": 15, "its": [10, 12, 14], "modular": [], "extend": [], "nearli": [], "infinit": [], "number": [14, 15], "purpos": [], "intend": [], "aim": [], "more": [6, 10, 13, 14, 15], "beginn": [], "advanc": [6, 13, 14], "user": [12, 13], "interest": [14, 15], "throughout": [], "function": [10, 14, 15], "curv": [14, 15], "fit": [], "write": [10, 12, 15], "file": 12, "encount": [], "dure": [], "anim": [], "insid": [], "simul": 10, "process": [12, 13], "mechan": [14, 15], "electrostat": [], "wave": [6, 7, 14], "quantum": 15, "optic": 6, "At": [], "end": [10, 14, 15], "machin": [], "now": [10, 14, 15], "becom": 10, "present": [], "comprehens": [], "list": [8, 10], "stimul": [], "curios": [], "slight": [], "syntax": [], "alwai": [14, 15], "refer": [], "3": [10, 14, 16], "standard": [], "experiment": 7, "iii": 7, "deal": 7, "two": [7, 10, 13, 14, 15], "major": 7, "electromagnet": [6, 7, 14], "particl": [7, 15], "environn": 7, "00": [7, 9], "05": 7, "09": [7, 9], "43": 7, "16": 7, "15": [7, 9, 15], "first": [8, 10, 14, 15], "jupyterhub": 8, "ip": 8, "yourself": 8, "familiar": 8, "interfac": [8, 12, 13, 14, 15], "correspond": [8, 14], "classic": [8, 15], "ani": [8, 12, 13, 14], "tab": [8, 10, 12], "string": 8, "dictionari": 8, "after": [9, 15], "hopefulli": 9, "abl": [9, 13], "variabl": [9, 15], "type": [9, 10, 12, 13, 14], "01": [9, 15], "23": 9, "oper": [9, 13], "comparison": 9, "42": 9, "22": [9, 15], "namespac": [9, 10], "45": [9, 15], "03": [9, 15], "wa": [10, 11, 12, 13, 14, 15, 16], "gener": [6, 10, 11, 12, 13, 16], "intro": [10, 11, 12, 13], "editcel": 10, "ipynb": [10, 11, 12, 13, 14, 15, 16], "pretti": 10, "cell": [10, 12, 13], "multipl": 10, "line": [10, 15], "press": [10, 13], "block": 10, "identifi": [10, 14], "belong": [10, 14, 15], "togeth": [10, 14], "ident": 10, "longer": 10, "later": [10, 14], "To": 10, "indent": 10, "either": 10, "whitespac": 10, "comment": 10, "ad": 10, "annot": 10, "someon": 10, "els": [10, 14, 15], "understand": [10, 12], "singl": [6, 10, 14, 15], "charact": 10, "front": 10, "over": [10, 12, 14], "same": [10, 15], "docstr": 10, "text": [10, 12, 13, 14, 15], "2": [10, 14, 15, 16], "typic": [10, 15], "def": [10, 14, 15], "x": [10, 13, 14, 15], "calcul": [10, 15], "argument": 10, "float": 10, "integ": [10, 14], "valu": [10, 14], "y": [10, 13, 14, 15], "time": [10, 14, 15], "don": [10, 12], "t": [10, 12, 13, 14, 15], "forget": 10, "__main__": 10, "extrem": 10, "wai": [10, 12, 14, 15], "everyth": 10, "realli": [10, 14], "chang": [10, 13, 14, 15], "action": 10, "menu": [10, 13], "hardwar": [10, 13], "shortcut": [10, 13], "m": [10, 13, 14], "popular": 10, "markup": [10, 12], "superset": 10, "html": [10, 12, 14], "Its": 10, "specif": [10, 12, 14], "found": 10, "daringfirebal": 10, "render": [10, 12, 13], "unrend": 10, "see": [10, 13, 14], "format": [10, 12, 15], "represent": [10, 12], "": [10, 12, 13, 14], "raw": [10, 12, 13], "sourc": [10, 14, 15], "button": [10, 13], "shift": [10, 13, 15], "doubl": 10, "appear": 10, "put": 10, "ital": 10, "bold": 10, "build": 10, "nest": 10, "item": 10, "enumer": 10, "subitem": 10, "subsubitem": 10, "second": [10, 14, 15], "third": [10, 15], "anoth": [10, 13, 14], "sublist": 10, "blockquot": 10, "beauti": 10, "better": 10, "ugli": 10, "explicit": 10, "implicit": 10, "simpl": [6, 10, 12, 15], "complex": [6, 10, 14, 15], "complic": 10, "flat": 10, "spars": 10, "dens": 10, "readabl": 10, "count": 10, "special": [10, 14, 15], "case": [10, 14, 15], "aren": 10, "enough": 10, "break": [10, 14], "rule": 10, "although": 10, "practic": 10, "beat": [10, 15], "puriti": 10, "error": [10, 15], "never": 10, "pass": [10, 14], "silent": 10, "unless": 10, "explicitli": 10, "silenc": 10, "face": 10, "ambigu": 10, "refus": 10, "temptat": 10, "guess": 10, "prefer": 10, "obviou": 10, "re": [10, 15], "dutch": 10, "often": [10, 15], "implement": 10, "hard": 10, "bad": 10, "idea": 10, "honk": 10, "let": [10, 15], "those": 10, "shorthand": 10, "space": [10, 15], "emb": 10, "meant": [10, 12], "illustr": 10, "instead": 10, "execut": [10, 12, 13], "f": [10, 14], "other": [10, 12, 14, 15], "0": [10, 13, 14, 15, 16], "n": [10, 14, 15], "printf": 10, "hello": 10, "d": [10, 13, 14, 15], "4": [10, 14, 16], "courtesi": 10, "mathjax": 10, "mathemat": [10, 14, 15], "express": [10, 14, 15], "both": [10, 15], "inlin": 10, "e": [10, 13, 14, 15], "pi": [10, 14, 15], "displai": [10, 12, 14], "sum_": [10, 14, 15], "infti": [10, 15], "frac": [10, 14, 15], "surround": 10, "own": [10, 12], "directli": 10, "integr": [10, 14, 15], "altern": 10, "url": [10, 12], "src": [10, 14], "mov": 10, "movi": 10, "mp4": 10, "width": [10, 14, 15], "320": 10, "height": [10, 14], "200": [10, 14], "preload": 10, "store": 10, "local": [10, 15], "youtub": 10, "ipython": [10, 14], "9": [10, 14, 15], "youtubevideo": 10, "qllx32jugzi": 10, "600": [10, 15], "introduction2jupyt": 12, "A": [12, 13, 15], "browser": 12, "enabl": 12, "These": [12, 14], "self": 12, "record": 12, "convert": 12, "variou": 12, "system": [12, 14, 15], "git": 12, "nbviewer": 12, "combin": 12, "three": [12, 15], "compon": [12, 14], "applic": [6, 12, 14], "desktop": 12, "separ": [12, 13, 15], "given": [12, 14, 15], "output": 12, "handl": 12, "thing": 12, "widget": [12, 14, 15], "introspect": 12, "visibl": 12, "input": 12, "rich": 12, "media": [6, 12], "object": [12, 14, 15], "brows": 12, "individual": 12, "arbitrari": 12, "oder": [12, 14, 15], "png": 12, "svg": [12, 14], "pdf": 12, "javascript": [12, 14], "bind": 12, "visual": [12, 14], "reactiv": 12, "side": [12, 15], "bound": 12, "almost": 12, "dedic": [12, 13], "100": [12, 13, 14], "julia": 12, "r": [12, 13, 14, 15], "rubi": 12, "haskel": 12, "scala": 12, "mani": [6, 12, 13, 14, 15], "default": 12, "pick": 12, "commun": 12, "json": 12, "zeromq": 12, "websocket": 12, "messag": 12, "protocol": 12, "describ": [12, 14, 15], "most": [12, 13, 15], "need": [12, 14, 15], "know": [12, 14], "about": 12, "session": 12, "filesystem": 12, "extens": 12, "easili": 12, "consist": 12, "linear": [6, 12, 14], "sequenc": 12, "live": 12, "narr": 12, "unformat": 12, "modif": 12, "nbconvert": 12, "intern": 12, "binari": 12, "encod": 12, "base64": 12, "them": [12, 14], "manipul": [6, 12, 13], "programmat": 12, "export": 12, "static": 12, "restructeredtext": 12, "slide": 12, "reveal": 12, "j": [12, 13, 14, 15], "util": 12, "furthermor": 12, "public": 12, "via": 12, "load": 12, "notebookeditor": 13, "essenti": 13, "where": [13, 14], "jupyterlab": 13, "blue": [13, 14, 15], "border": 13, "prompt": 13, "area": 13, "normal": [13, 14, 15], "grei": 13, "io": 13, "devic": 13, "modal": 13, "optim": 13, "effici": 13, "usag": 13, "made": [13, 15], "possibl": [13, 15], "activ": 13, "rel": [13, 15], "few": 13, "entir": 13, "so": [13, 15], "ones": 13, "switch": 13, "mod": 13, "esc": 13, "k": [13, 14, 15], "current": [13, 15], "save": 13, "insert": [13, 14, 15], "abov": [13, 14, 15], "b": [13, 15], "pasteboard": 13, "cut": 13, "c": [13, 14, 15], "v": [13, 15], "past": 13, "delet": 13, "z": [13, 14, 15], "undo": 13, "interrupt": 13, "restart": 13, "bottom": 13, "panel": 13, "10": [13, 14, 15], "print": 13, "coupl": [13, 15], "move": 13, "option": [13, 16], "call": [13, 14, 15], "top": [13, 14], "report": 13, "state": [13, 14, 15], "mean": [13, 14, 15], "readi": 13, "busi": 13, "tap": 13, "reconnect": 13, "try": [13, 15], "won": 13, "l1": [14, 15, 16], "1_ray_opt": 14, "ipywidget": [14, 15], "pyplot": [15, 16], "plt": [14, 15, 16], "numpi": 15, "np": [14, 15], "deliv": 14, "simplest": [14, 15], "light": [6, 14], "propag": [6, 14, 15], "despit": 14, "simplif": 14, "power": [6, 14, 15], "howev": 14, "doe": 14, "insight": 14, "govern": 14, "geometr": 14, "therefor": [14, 15], "assumpt": [14, 15], "travel": [14, 15], "emit": [14, 15], "detect": [14, 15], "detector": [14, 15], "effect": 14, "medium": 14, "c_": [14, 15], "take": [14, 15], "distanc": [14, 15], "nd": [14, 15], "amount": [14, 15], "path": [14, 15], "length": [14, 15], "satisfi": [14, 15], "neither": 14, "speed": [14, 15], "nor": 14, "someth": 14, "consid": 14, "infer": 14, "observ": 14, "figur": [14, 15, 16], "angl": [14, 15, 16], "incid": [14, 15], "equal": [14, 15, 16], "begin": [14, 15], "theta_": [14, 15], "n_": [14, 15], "sin": [14, 15], "known": [14, 15], "snell": [14, 15], "relat": [14, 15], "theta_1": [14, 15], "theta_2": [14, 15], "With": [14, 15], "situat": [14, 15], "occur": [14, 15], "total": [], "fig": [14, 15, 16], "ax": [14, 15, 16], "subplot": [14, 15, 16], "figsiz": [14, 15], "canva": [14, 15], "header_vis": [14, 15], "fals": [14, 15], "n1": [14, 15], "n2": [14, 15], "90": [14, 15, 16], "remov": [14, 15], "old": 15, "cla": 15, "theta1": [14, 15, 16], "180": [15, 16], "theta2": [15, 16], "arcsin": [14, 15], "set_titl": [14, 15], "axvlin": [14, 15], "l": 15, "04": 15, "n_2": [14, 15], "n_1": [14, 15], "round": 15, "axhlin": 15, "color": [14, 15], "lw": 15, "quiver": 15, "co": [14, 15], "scale": 15, "pivot": 15, "tip": 15, "red": 15, "lens": [14, 15], "surfac": [14, 15], "depend": [14, 15], "posit": [14, 15], "2d": [14, 15], "circular": [14, 15], "diagram": [14, 15], "definit": [14, 15], "alpha": [14, 15], "delta": [14, 15], "tan": [14, 15], "z_2": [14, 15], "z_1": [14, 15], "gamma": 15, "approx": [14, 15], "replac": 15, "n_2r": [14, 15], "conjug": 15, "plane": 15, "quad": [14, 15], "rightarrow": [14, 15], "yz_2": [14, 15], "left": [14, 15], "z_2y": [14, 15], "independ": 15, "up": [14, 15], "point": [14, 15], "foundat": [6, 14, 15], "biconvex": 15, "len": [], "appli": [14, 15], "formula": 15, "twice": 15, "theta_t": [14, 15], "nr_1": [14, 15], "r_2": [14, 15], "r_1": [14, 15], "maker": [14, 15], "tell": [14, 15], "radii": [14, 15], "flip": [14, 15], "sign": [14, 15], "sinc": [14, 15], "direct": [14, 15], "y_2": [14, 15], "y_1": [14, 15], "magnif": [14, 15], "limit": [14, 15], "paraxi": [14, 15], "approxim": [14, 15], "6": [14, 15], "120": [14, 15], "dot": [14, 15], "ll": [14, 15], "rm": [14, 15], "radian": [14, 15], "true": [14, 15], "microscopi": [6, 14, 15], "80": [14, 15], "still": [14, 15], "lecture1": 15, "2020": 15, "violat": 15, "primari": 15, "abber": 15, "classif": 15, "seidel": 15, "1821": 15, "1896": 15, "coma": [14, 15], "astigmat": [14, 15], "field": [6, 15], "curvatur": [14, 15], "distort": 15, "2z_1": 15, "chromat": 15, "measur": 15, "correct": 15, "shape": [14, 15], "nowadai": 15, "adapt": [6, 15], "spatial": 15, "max": [14, 15], "larger": [14, 15], "solut": 15, "theta_c": [14, 15], "glass": [14, 15], "41": [14, 15], "8": [14, 15], "water": 15, "48": 15, "7": 15, "diamond": 15, "24": 15, "h": 15, "_2": 15, "o": 15, "33": 15, "loss": 15, "central": 15, "core": 15, "clad": 15, "lower": [14, 15], "low": 15, "multimod": 15, "gradient": 15, "mostli": 15, "silica": 15, "sio": 15, "44": 15, "46": 15, "001": 15, "02": 15, "overlin": 15, "phi": [14, 15], "theta": 15, "theta_a": 15, "sqrt": [14, 15], "na": 15, "qquad": 15, "ay_1": 15, "cy_1": 15, "arrai": [14, 15], "rr": 15, "transfer": 15, "bmatrix": 15, "convex": 15, "concav": 15, "whole": 15, "precalcul": 15, "matric": 15, "element": 15, "m_nm_": 15, "m_1": 15, "rememb": 15, "free": 15, "perfect": 15, "cloack": 15, "appar": 15, "immit": 15, "condit": 15, "afoc": 15, "except": 15, "nbsphinx": 15, "math": [14, 15], "f_2": 15, "f_1": 15, "f_1f_2": 15, "f_3": 15, "t_2": 15, "t_1": 15, "four": 15, "t_1t_2": 15, "t_4": 15, "f_4": 15, "t_3": 15, "2t_1": 15, "2f_2": 15, "vec": 15, "op": 15, "int_a": 15, "mathrm": 15, "taken": 15, "proporton": 15, "extremum": 15, "neighbor": 15, "minimum": 15, "maximum": 15, "inflect": 15, "usual": 15, "pmatrix": 15, "y_0": 15, "opl": 15, "split": 15, "l_1": 15, "l_2": 15, "beta": 15, "equiv": 15, "2r_2": 15, "2f": [14, 15], "must": 15, "converg": 15, "global": 15, "nabla": 15, "trajectori": 15, "variat": [14, 15], "calculu": 15, "dx": 15, "partial": 15, "dy": 15, "dz": 15, "hspace": 15, "9cm": 15, "parametr": 15, "const": 15, "straight": 15, "selfoc": 15, "n_0": 15, "2y": 15, "parabol": 15, "profil": 15, "theta_0": 15, "squar": 15, "potenti": 15, "magnifi": 15, "simplifi": 15, "behind": 15, "virtual": 15, "real": 15, "construct": 15, "2x": 15, "da": 15, "aa": 15, "cosh": 15, "sinh": 15, "x_": 15, "y_": 15, "check": [14, 15], "veloc": 15, "horizont": 15, "n_h": 15, "newton": 15, "dt": 15, "u": 15, "coulomb": 15, "q": 15, "epsilon_0": 15, "r_": 15, "rf": 15, "chi": 15, "photon": 15, "prf": 15, "zeta": 15, "hbar": 15, "lambda": 15, "_k": 15, "wavelength": 15, "character": 15, "c_0": 15, "2u": 15, "superposit": 15, "u_1": 15, "u_2": 15, "a_1u_1": 15, "a_2u_2": 15, "langl": 15, "rangl": 15, "averag": 15, "cycl": 15, "nm": 15, "omega": 15, "amplitud": 15, "frequenc": [14, 15], "nu": 15, "phase": 15, "helmholtz": 15, "arg": 15, "wavefront": [14, 15], "ikr": 15, "outward": 15, "inward": 15, "_0": 15, "origin": [14, 15], "fresnel": 15, "axi": [14, 15], "taylor": 15, "align": 15, "2z": 15, "ikz": 15, "ik": 15, "kz": 15, "4z": 15, "n_f": 15, "2_m": 15, "theta_m": 15, "wavevector": 15, "nk_0": 15, "stai": 15, "lambda_0": 15, "_1": 15, "k_": 15, "1x": 15, "k_1": 15, "k_2": 15, "1z": 15, "_3": 15, "n_1k_0": 15, "k_3": 15, "n_2k_0": 15, "3x": 15, "tangenti": 15, "conserv": 15, "repres": [14, 15], "ik_0": 15, "label": [14, 15], "magnitud": 15, "k_0": 15, "ref": 15, "2a": 15, "imaginari": 15, "part": 15, "zero": 15, "indenpend": 15, "vari": 15, "slowli": 15, "eikon": 15, "proport": 15, "transmitt": 15, "ikd": 15, "thick": 15, "air": [14, 15], "d_0": 15, "h_0": 15, "ik_0d_0": 15, "valid": 15, "big": 15, "2r": 15, "ink_0d_0": 15, "constant": 15, "transform": [14, 15], "paraboloid": 15, "center": [15, 16], "diffract": 15, "grate": 15, "transmit": 15, "sampl": 15, "mu": 15, "camera": 15, "_": 15, "cam": 15, "int": 15, "i2": 15, "prime": 15, "contrast": 15, "dpc": 15, "i_t": 15, "i_b": 15, "superpos": 15, "i_1": 15, "i_2": 15, "u_1u_2": 15, "phi_1": 15, "phi_2": 15, "i_1i_2": 15, "i_0": 15, "i_": 15, "min": [14, 15], "translat": 15, "2i_0": 15, "exist": 15, "monochromat": 15, "u_m": 15, "i_3": 15, "between": 15, "seri": [6, 15], "im": 15, "peak": 15, "bar": 15, "mi_0": 15, "hu_1": 15, "u_3": 15, "2u_1": 15, "4r": 15, "ge": 15, "tild": 15, "finess": 15, "mathcal": 15, "simeq": 15, "2nd": 15, "spectral": 15, "rang": [14, 15], "interfer": 15, "laser": 15, "caviti": 15, "fabri": 15, "perot": 15, "interferomet": 15, "digit": 15, "holographi": 15, "track": 15, "domain": 15, "nu_1": 15, "nu_2": 15, "odd": 15, "2l": 15, "nu_q": 15, "nu_0": 15, "nu_f": 15, "interval": 15, "sum": [14, 15], "phasor": 15, "again": 15, "nu_ft": 15, "t_f": 15, "puls": 15, "ghz": 15, "1000": [14, 15], "lock": 15, "tau": 15, "comb": 15, "far": 15, "u_0": 15, "envelop": 15, "nabla_t": 15, "i2k": 15, "helmholz": 15, "2_t": 15, "a_1": 15, "rho": [14, 15], "xi": 15, "iz_0": 15, "z_0": 15, "rayleigh": 15, "w": 15, "radiu": [14, 15, 16], "a_0": 15, "w_0": 15, "paramet": 15, "perp": 15, "gg": 15, "invers": 15, "int_0": 15, "within": 15, "certain": [14, 15], "rho_0": 15, "86": 15, "99": 15, "waist": 15, "spot": 15, "size": 15, "theta_0z": 15, "increas": 15, "linearli": 15, "larg": 15, "diverg": 15, "simlarli": 15, "slit": 15, "heisenberg": 15, "depth": 15, "focu": 15, "2z_0": 15, "additon": 15, "retard": 15, "guoi": 15, "v_p": 15, "arctan": 15, "2_0": 15, "mw_0": 15, "locat": [14, 15], "m_r": 15, "q_2": 15, "aq_1": 15, "cq_1": 15, "abcd": 15, "q_1": 15, "focus": 15, "2_2": 15, "w_2": 15, "focal": 15, "non": [6, 14, 15], "g": 15, "u_": 15, "h_m": 15, "h_n": 15, "hermit": 15, "polynomi": 15, "h_1": 15, "20": 15, "h_2": 15, "wavefunct": 15, "mirror": 15, "l_p": 15, "il": 15, "2p": 15, "laguerr": 15, "radial": [14, 15], "azimuth": [14, 15], "neg": [14, 15], "helic": 15, "topolog": 15, "charg": 15, "gauss": 15, "electr": 15, "magnet": 15, "vector": 15, "maxwel": 15, "varepsilon_0": 15, "mu_0": 15, "36": 15, "permitt": 15, "permeabl": 15, "varepsilon": 15, "alreadi": [14, 15], "_0e": 15, "transvers": 15, "energi": 15, "densiti": 15, "u_b": 15, "flow": [6, 15], "poynt": 15, "rangle_t": 15, "e_0": 15, "eta_0": 15, "mu_0c_0": 15, "377": 15, "imped": 15, "vacuum": 15, "radiat": 15, "pressur": 15, "electron": 15, "cloud": 15, "displac": 15, "against": 15, "nucleu": 15, "dipol": 15, "elementari": 15, "11": 15, "75": 15, "13": 15, "mm": 15, "atom": 15, "glanc": 15, "per": 15, "unit": [14, 15], "volum": 15, "hat": 15, "g_b": 15, "oint_": 15, "q_b": 15, "int_v": 15, "dv": 15, "rho_b": 15, "nq": 15, "flux": 15, "assum": [14, 15], "rest": 15, "orient": 15, "ionic": 15, "degener": 15, "propto": 15, "histori": 15, "p_i": 15, "sum_j": 15, "chi_": 15, "ij": 15, "e_j": 15, "d_i": 15, "varepsilon_": 15, "int_": 15, "a_2": 15, "a_3": 15, "e_": 15, "e_a": 15, "delai": 15, "nfrac": 15, "sim": 15, "plate": 15, "suscept": 15, "scalar": 15, "varepsilon_r": 15, "damp": 15, "harmon": 15, "oscil": 15, "ddot": 15, "sigma": 15, "omega_0": 15, "x_0": 15, "respons": 15, "eta": 15, "q_e": 15, "nq_e": 15, "polariz": 15, "chi_0": 15, "treatment": 15, "ne": 15, "f_j": 15, "omega_j": 15, "sigma_j": 15, "strength": 15, "f_": 15, "12": [14, 15], "m_l": 15, "hbar\u00b2": 15, "e_2": 15, "e_1": 15, "lorentz": 15, "kappa": 15, "2i": 15, "2k_0": 15, "coeffici": 15, "weakli": 15, "absorb": 15, "dn": 15, "intim": 15, "stem": 15, "polarizazit": 15, "a_x": 15, "_x": 15, "a_i": 15, "_y": 15, "phi_x": 15, "phi_i": 15, "e_x": 15, "e_i": 15, "e_xe_i": 15, "a_xa_i": 15, "half": 15, "2a_xa_i": 15, "circ": 15, "ellipt": 15, "neq": 15, "formal": 15, "j_1": 15, "j_2": 15, "a_": 15, "1y": 15, "determin": 15, "under": [14, 15], "rai": 6, "facet": 6, "research": 6, "involv": [6, 14], "propgat": 6, "fundament": 6, "matter": 6, "disord": 6, "quanta": 6, "superresolut": 6, "fastest": 6, "grow": 6, "fourier": 6, "anisotrop": 6, "lai": 6, "patch": 16, "defin": [14, 16], "arc": 16, "degre": [14, 16], "add_patch": 16, "aspect": 16, "set_aspect": 16, "set_xlim": 16, "set_ylim": 16, "draw": 14, "further": 14, "hit": 14, "nonlinear": 14, "angular": 14, "obtain": 14, "expand": 14, "bracket": 14, "lead": 14, "note": 14, "seen": 14, "latter": 14, "actual": 14, "level": 14, "deriv": 14, "orthonorm": 14, "wide": 14, "did": 14, "disk": 14, "particularli": 14, "becaus": 14, "orthogon": 14, "inner": 14, "product": 14, "circl": 14, "decompos": 14, "polar": 14, "coordin": 14, "z_n": 14, "r_n": 14, "geq": 14, "leq": 14, "2k": 14, "method": 14, "being": 14, "noll": 14, "pair": 14, "order": 14, "ophthalmologi": 14, "human": 14, "ey": 14, "decomposit": 14, "simpler": 14, "defocu": 14, "etc": 14, "radial_polynomi": 14, "zeros_lik": 14, "ab": 14, "factori": 14, "zernike_polynomi": 14, "linspac": 14, "400": 14, "xx": 14, "yy": 14, "meshgrid": 14, "arctan2": 14, "mask": 14, "nan": 14, "flatten": 14, "imshow": 14, "extent": 14, "off": 14, "tight_layout": 14, "spherical_surfac": 16, "outgo": 14, "characterist": 14, "onto": 14, "revers": 14, "anymor": 14, "out": 14, "phenomenon": 14, "fantast": 14, "54": 14, "snell_law": 14, "theta1_degre": 14, "theta1_radian": 14, "sin_theta2": 14, "theta2_radian": 14, "n1_glass": 14, "n2_air": 14, "theta2_glass_to_air": 14, "dpi": 14, "150": 14, "linestyl": 14, "critic": 14, "\u03b8c": 14, "xlabel": 14, "\u03b8_1": 14, "ylabel": 14, "\u03b8_2": 14, "xlim": 14, "ylim": 14, "grid": 14, "61": 14, "62": [], "html_code": 14, "id": 14, "mycanva": [], "style": 14, "1px": [], "solid": [], "000000": [], "support": [], "html5": [], "tag": [], "script": 14, "var": 14, "getelementbyid": [], "ctx": [], "getcontext": [], "rectangl": [], "fillstyl": [], "0000ff": [], "fillrect": [], "63": [], "mybutton": [], "me": [], "handlebuttonclick": [], "alert": [], "addeventlisten": [], "64": [], "createel": [], "cdnj": [], "cloudflar": [], "ajax": [], "lib": [], "d3": 14, "appendchild": [], "consol": [], "log": [], "window": [], "65": [], "svg_script": [], "append": 14, "attr": 14, "300": [], "stroke": [], "grai": [], "cyan": [], "130": [], "cx": 14, "cy": 14, "transit": [], "durat": [], "10000": [], "69": [], "load_d3_in_cell_output": 14, "d3j": 14, "v6": 14, "get_ipython": 14, "event": 14, "regist": 14, "pre_run_cel": 14, "70": [], "div": 14, "ensur": [], "50": 14, "89": [], "92": [], "290": [], "eas": [], "easelinear": [], "102": 14, "103": 14, "floatslid": 14, "update_circle_radiu": 14, "slider": 14, "continuous_upd": 14, "callback": 14, "initi": 14}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"welcom": 6, "experiment": [], "physik": [], "3": 15, "cours": 4, "inform": [], "jupyt": 12, "notebook": [11, 12, 13], "lectur": [6, 9], "1": [6, 8, 15], "indic": 6, "tabl": 6, "assign": 0, "exam": 1, "instructor": 2, "resourc": 3, "molecular": 3, "nanophoton": 3, "group": 3, "python": 3, "document": [3, 12], "tutori": 3, "schedul": 4, "thi": 5, "websit": 5, "introduct": [6, 12], "photon": 6, "overview": 7, "exercis": 8, "content": 9, "enter": 10, "code": [10, 13], "markdown": 10, "basic": 10, "head": 10, "embed": 10, "latex": 10, "equat": 10, "imag": 10, "video": 10, "an": 11, "empti": 11, "what": [12, 15], "i": 12, "editor": [12, 13], "kernel": [12, 13], "edit": 13, "mode": 13, "command": 13, "keyboard": 13, "navig": 13, "run": 13, "manag": 13, "gener": [14, 15], "optic": [14, 15], "rai": [14, 15], "law": [14, 15], "reflect": [14, 15], "refract": [14, 15], "spheric": [14, 15], "boundari": [14, 15], "geometr": 15, "total": [14, 15], "intern": [14, 15], "guid": 15, "light": 15, "fiber": 15, "step": 15, "index": 15, "meridion": 15, "skew": 15, "numer": 15, "apertur": 15, "matrix": 15, "For": 15, "exampl": 15, "cloak": 15, "fermat": 15, "": 15, "principl": 15, "thin": 15, "len": [14, 15], "formul": 15, "differenti": 15, "form": 15, "compon": 15, "grin": 15, "you": 15, "should": 15, "know": 15, "mirag": 15, "effect": 15, "over": 15, "hot": 15, "street": 15, "bf": 15, "f": 15, "m": 15, "cdot": 15, "correspond": 15, "quantiti": 15, "momentum": 15, "tweezer": 15, "wave": 15, "gaussian": 15, "beam": 15, "propierti": 15, "transmiss": 15, "through": 15, "higher": 15, "order": 15, "cylindr": 15, "coordin": 15, "electromagnet": 15, "dielectr": 15, "media": 15, "linear": 15, "nondispers": 15, "homogen": 15, "isotrop": 15, "inhomogen": 15, "anisotrop": 15, "dispers": 15, "nonlinear": 15, "microscop": 15, "model": 15, "p": 15, "reson": 15, "medium": 15, "absorpt": 15, "kramer": 15, "kronig": 15, "4": 15, "polar": 15, "conjug": 14, "plane": 14, "biconvex": 14, "aberr": 14, "character": 14, "zernik": 14, "polynomi": 14}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"Assignments": [[0, "assignments"]], "Exams": [[1, "exams"]], "Instructor": [[2, "instructor"]], "Resources": [[3, "resources"]], "Molecular Nanophotonics Group": [[3, "molecular-nanophotonics-group"]], "Python Documentation": [[3, "python-documentation"]], "Python Tutorials": [[3, "python-tutorials"]], "Course Schedule": [[4, "course-schedule"]], "This Website": [[5, "this-website"]], "Overview": [[7, "overview"]], "Exercise 1": [[8, "exercise-1"]], "Lecture Contents": [[9, "lecture-contents"]], "Entering code": [[10, "Entering-code"]], "Entering Markdown": [[10, "Entering-Markdown"]], "Markdown basics": [[10, "Markdown-basics"]], "Headings": [[10, "Headings"]], "Embedded code": [[10, "Embedded-code"]], "LaTeX equations": [[10, "LaTeX-equations"]], "Images": [[10, "Images"]], "Videos": [[10, "Videos"]], "An empty notebook": [[11, "An-empty-notebook"]], "Introduction to Jupyter": [[12, "Introduction-to-Jupyter"]], "What is Jupyter Notebook?": [[12, "What-is-Jupyter-Notebook?"]], "Notebook editor": [[12, "Notebook-editor"], [13, "Notebook-editor"]], "Kernels": [[12, "Kernels"]], "Notebook documents": [[12, "Notebook-documents"]], "Edit mode": [[13, "Edit-mode"]], "Command mode": [[13, "Command-mode"]], "Keyboard navigation": [[13, "Keyboard-navigation"]], "Running code": [[13, "Running-code"]], "Managing the kernel": [[13, "Managing-the-kernel"]], "Welcome to the Introduction to Photonics 1!": [[6, "welcome-to-the-introduction-to-photonics-1"]], "Lecture 1:": [[6, null]], "Indices and tables": [[6, "indices-and-tables"]], "General Optics": [[14, "General-Optics"]], "Ray Optics": [[14, "Ray-Optics"]], "Law of reflection": [[14, "Law-of-reflection"], [15, "Law-of-reflection"]], "Law of refraction": [[14, "Law-of-refraction"], [15, "Law-of-refraction"]], "Refraction on spherical boundary": [[14, "Refraction-on-spherical-boundary"], [15, "Refraction-on-spherical-boundary"]], "Conjugated Planes": [[14, "Conjugated-Planes"]], "Biconvex Lens": [[14, "Biconvex-Lens"]], "Aberration Characterization and Zernike Polynomials": [[14, "Aberration-Characterization-and-Zernike-Polynomials"]], "Total Internal Reflection": [[14, "Total-Internal-Reflection"]], "1. General Optics": [[15, "1.-General-Optics"]], "Geometrical Optics": [[15, "Geometrical-Optics"]], "Total internal reflection": [[15, "Total-internal-reflection"]], "Guiding light fibers": [[15, "Guiding-light-fibers"]], "Step-index fiber": [[15, "Step-index-fiber"]], "Meridional ray": [[15, "Meridional-ray"]], "Skewed ray": [[15, "Skewed-ray"]], "Numerical aperture": [[15, "Numerical-aperture"]], "Matrix Optics": [[15, "Matrix-Optics"], [15, "id5"]], "For example: Optical cloaking": [[15, "For-example:-Optical-cloaking"]], "Fermat\u2019s Principle": [[15, "Fermat's-Principle"]], "Refraction": [[15, "Refraction"]], "Thin lens": [[15, "Thin-lens"]], "Formulation of Fermat\u2019s principle": [[15, "Formulation-of-Fermat's-principle"]], "Differential form in components": [[15, "Differential-form-in-components"]], "GRIN lens": [[15, "GRIN-lens"]], "What you should know:": [[15, "What-you-should-know:"]], "Mirage effect over a hot street": [[15, "Mirage-effect-over-a-hot-street"]], "{\\bf F = m \\cdot a} optics": [[15, "{\\bf-F-=-m-\\cdot-a}-optics"]], "Corresponding quantities": [[15, "Corresponding-quantities"]], "Ray optics and momentum": [[15, "Ray-optics-and-momentum"]], "Optical Tweezers": [[15, "Optical-Tweezers"]], "Wave Optics": [[15, "Wave-Optics"]], "Gaussian beam": [[15, "Gaussian-beam"]], "Propierties": [[15, "Propierties"]], "Transmission through a lens": [[15, "Transmission-through-a-lens"]], "Higher order Gaussian beams": [[15, "Higher-order-Gaussian-beams"]], "Cylindrical coordinates": [[15, "Cylindrical-coordinates"]], "1.3 Electromagnetic Optics": [[15, "1.3-Electromagnetic-Optics"]], "Dielectric media": [[15, "Dielectric-media"]], "linear media": [[15, "linear-media"]], "nondispersive media": [[15, "nondispersive-media"]], "homogeneous media": [[15, "homogeneous-media"]], "isotropic media": [[15, "isotropic-media"]], "inhomogeneous media": [[15, "inhomogeneous-media"]], "anisotropic media": [[15, "anisotropic-media"]], "dispersive media": [[15, "dispersive-media"]], "nonlinear media": [[15, "nonlinear-media"]], "Linear, nondispersive, homogeneous, isotropic media": [[15, "Linear,-nondispersive,-homogeneous,-isotropic-media"]], "microscopic model of P": [[15, "microscopic-model-of-P"]], "resonant medium": [[15, "resonant-medium"]], "dispersion": [[15, "dispersion"]], "absorption and dispersion": [[15, "absorption-and-dispersion"]], "Kramers\u2013Kronig": [[15, "Kramers\u2013Kronig"]], "1.4 Polarization Optics": [[15, "1.4-Polarization-Optics"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/docs/_sources/notebooks/L1/1_ray_optics.ipynb.txt b/docs/_sources/notebooks/L1/1_ray_optics.ipynb.txt index ec85e02..c2e94fa 100644 --- a/docs/_sources/notebooks/L1/1_ray_optics.ipynb.txt +++ b/docs/_sources/notebooks/L1/1_ray_optics.ipynb.txt @@ -130,12 +130,48 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 102, "id": "fbf42d2d-ba72-4d79-b251-bf343a9c054c", "metadata": { "tags": [] }, "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -184,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 103, "id": "a7043a8d-8a5a-4b0a-9ec3-3c61e77665b1", "metadata": { "tags": [] @@ -241,33 +277,70 @@ { "data": { "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "81c9708e657a43299356d6d746905d25", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=50.0, continuous_update=False, description='Radius:', min=10.0, step=1…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", "
\n", + "\n", "\n" ], "text/plain": [ @@ -279,35 +352,51 @@ } ], "source": [ - "%%html\n", + "from ipywidgets import interact, FloatSlider\n", + "from IPython.display import display, HTML, Javascript\n", + "\n", + "# Define the function to update the circle radius\n", + "def update_circle_radius(radius):\n", + " display(Javascript(f\"\"\"\n", + " (function() {{\n", + " var circle = d3.select(\"#d3-circle\");\n", + " if(circle) circle.attr(\"r\", {radius});\n", + " }})();\n", + " \"\"\"))\n", + "\n", + "# Create the slider widget\n", + "slider = FloatSlider(\n", + " value=50,\n", + " min=10,\n", + " max=100,\n", + " step=1,\n", + " description='Radius:',\n", + " continuous_update=False\n", + ")\n", + "\n", + "# Display the slider and pass the update function as the callback\n", + "interact(update_circle_radius, radius=slider)\n", + "\n", + "# Define the HTML and JavaScript code for the initial D3.js circle\n", + "html_code = \"\"\"\n", "
\n", + "\n", "" + "\n", + "\"\"\"\n", + "\n", + "# Display the initial D3.js circle\n", + "display(HTML(html_code))" ] }, { diff --git a/docs/notebooks/L1/1_ray_optics.html b/docs/notebooks/L1/1_ray_optics.html index 90e783d..6740b77 100644 --- a/docs/notebooks/L1/1_ray_optics.html +++ b/docs/notebooks/L1/1_ray_optics.html @@ -217,7 +217,7 @@

Ray Optics

Law of reflection#

|

-

74410a67b2534d4f9009329c90514572

+

aac225b3eca74f0bb33ce989fda2deda

@@ -234,7 +234,7 @@

Law of reflection

Law of refraction#

|

-

5dacb075f2f74b528d720d4a439a7650

+

2698f2eb6e934a9bb5f8742afaa3de2e

@@ -249,7 +249,7 @@

Law of refraction\(\theta_1\) with the angle of the refracted ray \(\theta_2\).

With this law of refraction, there are a number of special situations, that occur. This is for example the total internal refraction. You can explore different situations with the short program below which gives you control over the refractive indices and the incident angles.

-
[89]:
+
[102]:
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
[92]:
+
[103]:
 
-
%%html
-<div id="d3-container"></div>
-<script>
-// Ensure D3.js is loaded
-if (d3) {
-    // Select the container
-    var container = d3.select("#d3-container");
-
-    // Append an SVG element to the container
-    var svg = container.append("svg")
-        .attr("width", 400)
-        .attr("height", 200);
-
-    // Append a circle to the SVG element
-    svg.append("circle")
-        .attr("cx", 100)
-        .attr("cy", 100)
-        .attr("r", 50)
-        .style("fill", "blue");
-
-    circle.transition()
-        .duration(10000) // 2 seconds
-        .attr("cx", 290) // End at the right side
-        .ease(d3.easeLinear); // Use a linear easing function
-
-} else {
-    console.error("D3.js is not loaded");
-}
-</script>
+
from ipywidgets import interact, FloatSlider
+from IPython.display import display, HTML, Javascript
+
+# Define the function to update the circle radius
+def update_circle_radius(radius):
+    display(Javascript(f"""
+        (function() {{
+            var circle = d3.select("#d3-circle");
+            if(circle) circle.attr("r", {radius});
+        }})();
+    """))
+
+# Create the slider widget
+slider = FloatSlider(
+    value=50,
+    min=10,
+    max=100,
+    step=1,
+    description='Radius:',
+    continuous_update=False
+)
+
+# Display the slider and pass the update function as the callback
+interact(update_circle_radius, radius=slider)
+
+# Define the HTML and JavaScript code for the initial D3.js circle
+html_code = """
+<div id="d3-container"></div>
+<script src="https://d3js.org/d3.v6.min.js"></script>
+<script>
+    var container = d3.select("#d3-container");
+    var svg = container.append("svg")
+        .attr("width", 200)
+        .attr("height", 200);
+    svg.append("circle")
+        .attr("id", "d3-circle")
+        .attr("cx", 100)
+        .attr("cy", 100)
+        .attr("r", 50)
+        .style("fill", "blue");
+</script>
+"""
+
+# Display the initial D3.js circle
+display(HTML(html_code))
 
@@ -339,44 +373,54 @@

Law of refraction

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Refraction on spherical boundary#

Many of the interesting situations of refraction occur on interfaces, which are curved. Lenses, for example, have curved surfaces and the angles of refraction therefore change depending on the position. We can model in the simplest case by a spherical surface or in 2D just by a circular interface. The diagram below shows the definition of such a situation.

|

-

05c275b8a6104130aadb74549604e00e

+

558c811cefab402b83315df907d7f0a8

diff --git a/docs/notebooks/L1/1_ray_optics.ipynb b/docs/notebooks/L1/1_ray_optics.ipynb index ec85e02..c2e94fa 100644 --- a/docs/notebooks/L1/1_ray_optics.ipynb +++ b/docs/notebooks/L1/1_ray_optics.ipynb @@ -130,12 +130,48 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 102, "id": "fbf42d2d-ba72-4d79-b251-bf343a9c054c", "metadata": { "tags": [] }, "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -184,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 103, "id": "a7043a8d-8a5a-4b0a-9ec3-3c61e77665b1", "metadata": { "tags": [] @@ -241,33 +277,70 @@ { "data": { "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "81c9708e657a43299356d6d746905d25", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=50.0, continuous_update=False, description='Radius:', min=10.0, step=1…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", "
\n", + "\n", "\n" ], "text/plain": [ @@ -279,35 +352,51 @@ } ], "source": [ - "%%html\n", + "from ipywidgets import interact, FloatSlider\n", + "from IPython.display import display, HTML, Javascript\n", + "\n", + "# Define the function to update the circle radius\n", + "def update_circle_radius(radius):\n", + " display(Javascript(f\"\"\"\n", + " (function() {{\n", + " var circle = d3.select(\"#d3-circle\");\n", + " if(circle) circle.attr(\"r\", {radius});\n", + " }})();\n", + " \"\"\"))\n", + "\n", + "# Create the slider widget\n", + "slider = FloatSlider(\n", + " value=50,\n", + " min=10,\n", + " max=100,\n", + " step=1,\n", + " description='Radius:',\n", + " continuous_update=False\n", + ")\n", + "\n", + "# Display the slider and pass the update function as the callback\n", + "interact(update_circle_radius, radius=slider)\n", + "\n", + "# Define the HTML and JavaScript code for the initial D3.js circle\n", + "html_code = \"\"\"\n", "
\n", + "\n", "" + "\n", + "\"\"\"\n", + "\n", + "# Display the initial D3.js circle\n", + "display(HTML(html_code))" ] }, { diff --git a/docs/notebooks/L1/Lecture1.html b/docs/notebooks/L1/Lecture1.html index 6d55ab5..eb82750 100644 --- a/docs/notebooks/L1/Lecture1.html +++ b/docs/notebooks/L1/Lecture1.html @@ -231,7 +231,7 @@

Geometrical Optics

Law of reflection#

|

-

0f1f40618ec74ff685f585593ae98d3c

+

21731832378f45ee8fb98edaeca2308b

diff --git a/docs/searchindex.js b/docs/searchindex.js index 1b895f0..e411c1a 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["course-info/assignments", "course-info/exam", "course-info/instructor", "course-info/resources", "course-info/schedule", "course-info/website", "index", "lectures/Intro/overview", "lectures/L1/assignment_1", "lectures/L1/overview_1", "notebooks/Intro/EditCells", "notebooks/Intro/Empty", "notebooks/Intro/Introduction2Jupyter", "notebooks/Intro/NotebookEditor", "notebooks/L1/1_ray_optics", "notebooks/L1/Lecture1", "notebooks/L1/spherical_surface"], "filenames": ["course-info/assignments.rst", "course-info/exam.rst", "course-info/instructor.rst", "course-info/resources.rst", "course-info/schedule.rst", "course-info/website.rst", "index.rst", "lectures/Intro/overview.rst", "lectures/L1/assignment_1.rst", "lectures/L1/overview_1.rst", "notebooks/Intro/EditCells.ipynb", "notebooks/Intro/Empty.ipynb", "notebooks/Intro/Introduction2Jupyter.ipynb", "notebooks/Intro/NotebookEditor.ipynb", "notebooks/L1/1_ray_optics.ipynb", "notebooks/L1/Lecture1.ipynb", "notebooks/L1/spherical_surface.ipynb"], "titles": ["Assignments", "Exams", "Instructor", "Resources", "Course Schedule", "This Website", "Welcome to the Introduction to Photonics 1!", "Overview", "Exercise 1", "Lecture Contents", "Entering code", "An empty notebook", "Introduction to Jupyter", "Notebook editor", "General Optics", "1. General Optics", "<no title>"], "terms": {"thi": [0, 1, 3, 6, 10, 11, 12, 13, 14, 15, 16], "i": [1, 4, 5, 6, 8, 10, 13, 14, 15], "websit": [3, 10], "physic": [3, 5, 6, 7, 14], "schedul": [], "assign": [4, 5], "exam": [], "resourc": 5, "molecular": 15, "nanophoton": [], "group": 1, "python": [5, 9, 10, 12], "document": 10, "tutori": [], "instructor": [], "overview": [], "introduct": [1, 3, 9], "what": [1, 14], "editor": 7, "kernel": [], "edit": [10, 12], "mode": [10, 14, 15], "command": 10, "keyboard": 10, "navig": [], "run": 12, "code": [0, 1, 5, 7, 12], "manag": [], "enter": [7, 13], "markdown": [7, 8, 12, 13], "basic": [1, 9, 12, 13], "head": [], "embed": 12, "latex": [8, 12], "equat": [12, 14, 15], "imag": [12, 14, 15], "video": [0, 4, 5], "content": [5, 10, 12, 13], "exercis": [], "index": [6, 14], "modul": [6, 9, 10, 14, 15], "search": 6, "page": [5, 6, 10, 11, 12, 13, 14, 15, 16], "The": [0, 1, 4, 5, 7, 8, 12, 13, 14, 15], "lectur": [0, 4, 5], "held": 0, "complet": [0, 5, 10, 12], "onlin": [0, 4, 5], "year": 0, "we": [0, 1, 4, 5, 6, 8, 9, 10, 13, 14, 15], "suppli": 0, "also": [0, 1, 4, 5, 10, 12, 14, 15], "problem": [0, 1], "set": [0, 13, 14, 15, 16], "everi": [0, 4, 5], "week": [0, 4, 5], "all": [0, 1, 5, 12, 14, 15], "student": [0, 1], "come": [0, 4, 14, 15], "jupyt": [0, 1, 5, 7, 8, 9, 10, 13], "notebook": [0, 1, 4, 5, 7, 9, 10, 14, 15, 16], "individu": [0, 1, 10, 12], "pleas": [0, 4, 5], "fill": [0, 14], "answer": 0, "your": [0, 1, 5, 10, 12, 13], "ar": [0, 1, 3, 5, 9, 10, 12, 13, 14, 15], "ask": [0, 5], "return": [0, 10, 12, 14], "befor": [0, 15], "tuesdai": [0, 4], "morn": 0, "you": [0, 1, 3, 4, 5, 8, 9, 10, 12, 13, 14], "receiv": 0, "web": [0, 5, 12], "address": [0, 8, 14], "our": [0, 5, 8], "server": [0, 4, 5, 8, 12], "well": [0, 3, 5, 8, 10, 12, 15], "login": [0, 5, 8], "password": [0, 5, 8], "find": [0, 1, 3, 5, 15], "below": [0, 3, 10, 13, 14, 15], "short": [0, 14, 15], "how": [0, 10, 15], "download": [0, 5], "close": [1, 5, 14, 15], "cours": [1, 3, 5, 6, 7, 15], "an": [1, 4, 5, 8, 10, 12, 13, 14, 15], "form": [1, 10, 12, 14], "final": [1, 12, 14], "project": [1, 5, 10, 15], "shall": [1, 15], "topic": [1, 6, 7, 14], "choic": 1, "one": [1, 6, 10, 13, 14, 15], "provid": [1, 8, 10, 12, 13, 14], "exampl": [1, 10, 14], "hand": 1, "each": [1, 5, 12, 14, 15], "requir": [1, 5, 15], "No": 1, "work": [1, 5, 10, 15], "allow": [1, 5, 12, 13, 14], "follow": [1, 5, 10, 13, 14, 15], "outlin": 1, "introduc": [1, 6], "cover": 1, "motiv": 1, "go": [1, 5, 10, 13, 14, 15], "do": [1, 10, 14, 15], "should": [1, 10], "theoret": 1, "descript": [1, 6, 14], "solv": [1, 14, 15], "result": [1, 12, 14], "discuss": [1, 3, 5, 14], "develop": 1, "anot": 1, "step": [1, 16], "It": [1, 5, 6, 8, 12, 14, 15], "import": [1, 10, 13, 14, 15, 16], "highlight": 1, "consequ": [1, 15], "summari": 1, "summar": 1, "notbook": 1, "grade": [1, 15], "accord": [1, 14], "common": [1, 14], "scheme": 1, "email": [2, 12], "lastnam": 2, "physik": 2, "uni": 2, "leipzig": 2, "de": 2, "prof": 2, "dr": 2, "frank": 2, "cicho": [2, 15], "linn\u00e9str": 2, "5": [2, 13, 14, 15, 16], "04103": 2, "offic": 2, "322": 2, "phone": 2, "0341": 2, "97": 2, "32571": 2, "There": [3, 10, 12, 13, 14, 15], "ton": 3, "addit": [3, 12, 15], "structur": 3, "net": [3, 10], "onli": [3, 10, 14, 15], "veri": [3, 14], "small": [3, 14, 15], "select": [3, 10, 13, 14], "comput": [3, 5, 6, 12, 14], "base": [3, 5, 12, 14, 15], "model": [3, 5, 14], "mona": [3, 5], "forum": [3, 5], "matplotlib": [3, 15, 16], "panda": 3, "scienc": [3, 6], "nice": [3, 10], "updat": [4, 5, 14, 15], "weekli": 4, "thu": [4, 12, 13, 15], "expect": 4, "start": [4, 5, 6, 9, 10, 12], "april": 4, "7th": 4, "1": [4, 10, 13, 14, 16], "30": [4, 7], "pm": [4, 15], "new": [4, 5, 10, 13, 15], "As": [4, 8, 14], "materi": [4, 14, 15], "avail": [4, 12, 13], "can": [4, 5, 9, 10, 12, 13, 14, 15], "back": [4, 12], "studi": 4, "whenev": 4, "suitabl": [4, 14], "add": [4, 10, 12, 16], "explain": [4, 5, 10], "detail": [4, 12], "explor": [4, 5, 6, 9, 14, 15], "especi": 4, "mybind": [4, 5, 13], "thei": [4, 10, 14], "help": [4, 10, 12], "finish": [4, 13], "contain": [5, 6, 12, 14, 15], "inform": [5, 14, 15], "yet": [5, 12, 14], "accompani": [5, 12], "mai": [5, 10, 12], "get": [5, 15], "along": [5, 15], "just": [5, 10, 12, 14, 15], "read": [5, 12], "And": [5, 10], "give": [5, 14, 15], "chanc": 5, "interact": [5, 6, 12, 15], "have": [5, 9, 10, 13, 14, 15], "creat": [5, 9, 10, 12, 15, 16], "which": [5, 10, 12, 13, 14, 15], "reach": [5, 14], "ha": [5, 12, 13, 14, 15], "differ": [5, 12, 13, 14, 15], "categori": 5, "hope": 5, "us": [5, 6, 10, 12, 13, 14, 15], "intens": [5, 15], "question": 5, "guid": 5, "from": [5, 6, 10, 11, 12, 13, 14, 15, 16], "here": [5, 10, 12, 14, 15], "sever": [5, 14], "learn": 5, "program": [5, 12, 14, 15], "therebi": 5, "make": [5, 8, 10, 13, 14, 15, 16], "some": [5, 10, 14], "great": [5, 10], "tool": 5, "like": [5, 10, 12, 13, 14, 15], "servic": [5, 12], "host": 5, "http": [5, 10, 14], "org": [5, 12, 14], "binder": 5, "offer": 5, "easi": [5, 10], "place": 5, "share": [5, 12, 15], "environ": [5, 9, 12], "everyon": 5, "when": [5, 10, 12, 13, 14], "notic": 5, "icon": 5, "indic": [5, 13, 14, 15], "webpag": 5, "rather": 5, "than": [5, 10, 15], "look": [5, 13, 14, 15, 16], "click": [5, 10], "open": [5, 9, 13, 15], "patient": 5, "wait": 5, "until": [5, 13], "temporarili": 5, "If": [5, 10, 12, 13, 14, 15], "show": [5, 12, 13, 14, 15, 16], "inact": 5, "long": 5, "connect": [5, 12, 13], "finsih": 5, "keep": 5, "copi": [5, 13], "ahead": 5, "empti": 5, "github": [5, 12], "com": 5, "collabor": 5, "includ": [5, 10, 12, 14], "version": [5, 12, 13], "control": [5, 10, 12, 13, 14, 15], "In": [5, 6, 10, 13], "upper": 5, "right": [5, 10, 13, 14, 15, 16], "corner": [5, 13], "link": [5, 10], "repositori": 5, "anaconda": 5, "packag": 5, "www": 5, "distribut": 5, "privid": 5, "want": [5, 10, 14, 15], "home": 5, "without": [5, 8, 12, 15], "access": [5, 10], "good": [5, 10], "instal": [5, 12], "languag": [9, 10, 12], "kind": [], "scientif": [], "engin": [], "task": [], "analyz": [], "plot": [12, 14, 15, 16], "data": [9, 12], "numer": [], "difficult": [14, 15], "even": 14, "imposs": [], "analyt": [], "freeli": [], "been": 13, "due": 15, "its": [10, 12, 14], "modular": [], "extend": [], "nearli": [], "infinit": [], "number": [14, 15], "purpos": [], "intend": [], "aim": [], "more": [6, 10, 13, 14, 15], "beginn": [], "advanc": [6, 13, 14], "user": [12, 13], "interest": [14, 15], "throughout": [], "function": [10, 14, 15], "curv": [14, 15], "fit": [], "write": [10, 12, 15], "file": 12, "encount": [], "dure": [], "anim": [], "insid": [], "simul": 10, "process": [12, 13], "mechan": [14, 15], "electrostat": [], "wave": [6, 7, 14], "quantum": 15, "optic": 6, "At": [], "end": [10, 14, 15], "machin": [], "now": [10, 14, 15], "becom": 10, "present": [], "comprehens": [], "list": [8, 10], "stimul": [], "curios": [], "slight": [], "syntax": [], "alwai": [14, 15], "refer": [], "3": [10, 14, 16], "standard": [], "experiment": 7, "iii": 7, "deal": 7, "two": [7, 10, 13, 14, 15], "major": 7, "electromagnet": [6, 7, 14], "particl": [7, 15], "environn": 7, "00": [7, 9], "05": 7, "09": [7, 9], "43": 7, "16": 7, "15": [7, 9, 15], "first": [8, 10, 14, 15], "jupyterhub": 8, "ip": 8, "yourself": 8, "familiar": 8, "interfac": [8, 12, 13, 14, 15], "correspond": [8, 14], "classic": [8, 15], "ani": [8, 12, 13, 14], "tab": [8, 10, 12], "string": 8, "dictionari": 8, "after": [9, 15], "hopefulli": 9, "abl": [9, 13], "variabl": [9, 15], "type": [9, 10, 12, 13, 14], "01": [9, 15], "23": 9, "oper": [9, 13], "comparison": 9, "42": 9, "22": [9, 15], "namespac": [9, 10], "45": [9, 15], "03": [9, 15], "wa": [10, 11, 12, 13, 14, 15, 16], "gener": [6, 10, 11, 12, 13, 16], "intro": [10, 11, 12, 13], "editcel": 10, "ipynb": [10, 11, 12, 13, 14, 15, 16], "pretti": 10, "cell": [10, 12, 13], "multipl": 10, "line": [10, 15], "press": [10, 13], "block": 10, "identifi": [10, 14], "belong": [10, 14, 15], "togeth": [10, 14], "ident": 10, "longer": 10, "later": [10, 14], "To": 10, "indent": 10, "either": 10, "whitespac": 10, "comment": 10, "ad": 10, "annot": 10, "someon": 10, "els": [10, 14, 15], "understand": [10, 12], "singl": [6, 10, 14, 15], "charact": 10, "front": 10, "over": [10, 12, 14], "same": [10, 15], "docstr": 10, "text": [10, 12, 13, 14, 15], "2": [10, 14, 15, 16], "typic": [10, 15], "def": [10, 14, 15], "x": [10, 13, 14, 15], "calcul": [10, 15], "argument": 10, "float": 10, "integ": [10, 14], "valu": 10, "y": [10, 13, 14, 15], "time": [10, 14, 15], "don": [10, 12], "t": [10, 12, 13, 14, 15], "forget": 10, "__main__": 10, "extrem": 10, "wai": [10, 12, 14, 15], "everyth": 10, "realli": [10, 14], "chang": [10, 13, 14, 15], "action": 10, "menu": [10, 13], "hardwar": [10, 13], "shortcut": [10, 13], "m": [10, 13, 14], "popular": 10, "markup": [10, 12], "superset": 10, "html": [10, 12, 14], "Its": 10, "specif": [10, 12, 14], "found": 10, "daringfirebal": 10, "render": [10, 12, 13], "unrend": 10, "see": [10, 13, 14], "format": [10, 12, 15], "represent": [10, 12], "": [10, 12, 13, 14], "raw": [10, 12, 13], "sourc": [10, 14, 15], "button": [10, 13], "shift": [10, 13, 15], "doubl": 10, "appear": 10, "put": 10, "ital": 10, "bold": 10, "build": 10, "nest": 10, "item": 10, "enumer": 10, "subitem": 10, "subsubitem": 10, "second": [10, 14, 15], "third": [10, 15], "anoth": [10, 13, 14], "sublist": 10, "blockquot": 10, "beauti": 10, "better": 10, "ugli": 10, "explicit": 10, "implicit": 10, "simpl": [6, 10, 12, 15], "complex": [6, 10, 14, 15], "complic": 10, "flat": 10, "spars": 10, "dens": 10, "readabl": 10, "count": 10, "special": [10, 14, 15], "case": [10, 14, 15], "aren": 10, "enough": 10, "break": [10, 14], "rule": 10, "although": 10, "practic": 10, "beat": [10, 15], "puriti": 10, "error": [10, 14, 15], "never": 10, "pass": 10, "silent": 10, "unless": 10, "explicitli": 10, "silenc": 10, "face": 10, "ambigu": 10, "refus": 10, "temptat": 10, "guess": 10, "prefer": 10, "obviou": 10, "re": [10, 15], "dutch": 10, "often": [10, 15], "implement": 10, "hard": 10, "bad": 10, "idea": 10, "honk": 10, "let": [10, 15], "those": 10, "shorthand": 10, "space": [10, 15], "emb": 10, "meant": [10, 12], "illustr": 10, "instead": 10, "execut": [10, 12, 13], "f": [10, 14], "other": [10, 12, 14, 15], "0": [10, 13, 14, 15, 16], "n": [10, 14, 15], "printf": 10, "hello": 10, "d": [10, 13, 14, 15], "4": [10, 14, 16], "courtesi": 10, "mathjax": 10, "mathemat": [10, 14, 15], "express": [10, 14, 15], "both": [10, 15], "inlin": 10, "e": [10, 13, 14, 15], "pi": [10, 14, 15], "displai": [10, 12, 14], "sum_": [10, 14, 15], "infti": [10, 15], "frac": [10, 14, 15], "surround": 10, "own": [10, 12], "directli": 10, "integr": [10, 14, 15], "altern": 10, "url": [10, 12], "src": [10, 14], "mov": 10, "movi": 10, "mp4": 10, "width": [10, 14, 15], "320": 10, "height": [10, 14], "200": [10, 14], "preload": 10, "store": 10, "local": [10, 15], "youtub": 10, "ipython": [10, 14], "9": [10, 14, 15], "youtubevideo": 10, "qllx32jugzi": 10, "600": [10, 15], "introduction2jupyt": 12, "A": [12, 13, 15], "browser": 12, "enabl": 12, "These": [12, 14], "self": 12, "record": 12, "convert": 12, "variou": 12, "system": [12, 14, 15], "git": 12, "nbviewer": 12, "combin": 12, "three": [12, 15], "compon": [12, 14], "applic": [6, 12, 14], "desktop": 12, "separ": [12, 13, 15], "given": [12, 14, 15], "output": 12, "handl": 12, "thing": 12, "widget": [12, 15], "introspect": 12, "visibl": 12, "input": 12, "rich": 12, "media": [6, 12], "object": [12, 14, 15], "brows": 12, "individual": 12, "arbitrari": 12, "oder": [12, 14, 15], "png": 12, "svg": [12, 14], "pdf": 12, "javascript": 12, "bind": 12, "visual": [12, 14], "reactiv": 12, "side": [12, 14, 15], "bound": 12, "almost": 12, "dedic": [12, 13], "100": [12, 13, 14], "julia": 12, "r": [12, 13, 14, 15], "rubi": 12, "haskel": 12, "scala": 12, "mani": [6, 12, 13, 14, 15], "default": 12, "pick": 12, "commun": 12, "json": 12, "zeromq": 12, "websocket": 12, "messag": 12, "protocol": 12, "describ": [12, 14, 15], "most": [12, 13, 15], "need": [12, 14, 15], "know": [12, 14], "about": 12, "session": 12, "filesystem": 12, "extens": 12, "easili": 12, "consist": 12, "linear": [6, 12, 14], "sequenc": 12, "live": 12, "narr": 12, "unformat": 12, "modif": 12, "nbconvert": 12, "intern": 12, "binari": 12, "encod": 12, "base64": 12, "them": [12, 14], "manipul": [6, 12, 13], "programmat": 12, "export": 12, "static": 12, "restructeredtext": 12, "slide": 12, "reveal": 12, "j": [12, 13, 14, 15], "util": 12, "furthermor": 12, "public": 12, "via": 12, "load": [12, 14], "notebookeditor": 13, "essenti": 13, "where": [13, 14], "jupyterlab": 13, "blue": [13, 14, 15], "border": 13, "prompt": 13, "area": 13, "normal": [13, 14, 15], "grei": 13, "io": 13, "devic": 13, "modal": 13, "optim": 13, "effici": 13, "usag": 13, "made": [13, 15], "possibl": [13, 15], "activ": 13, "rel": [13, 15], "few": 13, "entir": 13, "so": [13, 15], "ones": 13, "switch": 13, "mod": 13, "esc": 13, "k": [13, 14, 15], "current": [13, 15], "save": 13, "insert": [13, 14, 15], "abov": [13, 14, 15], "b": [13, 15], "pasteboard": 13, "cut": 13, "c": [13, 14, 15], "v": [13, 15], "past": 13, "delet": 13, "z": [13, 14, 15], "undo": 13, "interrupt": 13, "restart": 13, "bottom": 13, "panel": 13, "10": [13, 15], "print": 13, "coupl": [13, 15], "move": 13, "option": [13, 16], "call": [13, 14, 15], "top": [13, 14], "report": 13, "state": [13, 14, 15], "mean": [13, 14, 15], "readi": 13, "busi": 13, "tap": 13, "reconnect": 13, "try": [13, 15], "won": 13, "l1": [14, 15, 16], "1_ray_opt": 14, "ipywidget": 15, "pyplot": [15, 16], "plt": [14, 15, 16], "numpi": 15, "np": [14, 15], "deliv": 14, "simplest": [14, 15], "light": [6, 14], "propag": [6, 14, 15], "despit": 14, "simplif": 14, "power": [6, 14, 15], "howev": 14, "doe": 14, "insight": 14, "govern": 14, "geometr": 14, "therefor": [14, 15], "assumpt": [14, 15], "travel": [14, 15], "emit": [14, 15], "detect": [14, 15], "detector": [14, 15], "effect": 14, "medium": 14, "c_": [14, 15], "take": [14, 15], "distanc": [14, 15], "nd": [14, 15], "amount": [14, 15], "path": [14, 15], "length": [14, 15], "satisfi": [14, 15], "neither": 14, "speed": [14, 15], "nor": 14, "someth": 14, "consid": 14, "infer": 14, "observ": 14, "figur": [14, 15, 16], "angl": [14, 15, 16], "incid": [14, 15], "equal": [14, 15, 16], "begin": [14, 15], "theta_": [14, 15], "n_": [14, 15], "sin": [14, 15], "known": [14, 15], "snell": [14, 15], "relat": [14, 15], "theta_1": [14, 15], "theta_2": [14, 15], "With": [14, 15], "situat": [14, 15], "occur": [14, 15], "total": [], "fig": [14, 15, 16], "ax": [14, 15, 16], "subplot": [14, 15, 16], "figsiz": [14, 15], "canva": [14, 15], "header_vis": [14, 15], "fals": [14, 15], "n1": [14, 15], "n2": [14, 15], "90": [14, 15, 16], "remov": [14, 15], "old": 15, "cla": 15, "theta1": [14, 15, 16], "180": [15, 16], "theta2": [15, 16], "arcsin": [14, 15], "set_titl": [14, 15], "axvlin": [14, 15], "l": 15, "04": 15, "n_2": [14, 15], "n_1": [14, 15], "round": 15, "axhlin": 15, "color": [14, 15], "lw": 15, "quiver": 15, "co": [14, 15], "scale": 15, "pivot": 15, "tip": 15, "red": 15, "lens": [14, 15], "surfac": [14, 15], "depend": [14, 15], "posit": [14, 15], "2d": [14, 15], "circular": [14, 15], "diagram": [14, 15], "definit": [14, 15], "alpha": [14, 15], "delta": [14, 15], "tan": [14, 15], "z_2": [14, 15], "z_1": [14, 15], "gamma": 15, "approx": [14, 15], "replac": 15, "n_2r": [14, 15], "conjug": 15, "plane": 15, "quad": [14, 15], "rightarrow": [14, 15], "yz_2": [14, 15], "left": [14, 15], "z_2y": [14, 15], "independ": 15, "up": [14, 15], "point": [14, 15], "foundat": [6, 14, 15], "biconvex": 15, "len": [], "appli": [14, 15], "formula": 15, "twice": 15, "theta_t": [14, 15], "nr_1": [14, 15], "r_2": [14, 15], "r_1": [14, 15], "maker": [14, 15], "tell": [14, 15], "radii": [14, 15], "flip": [14, 15], "sign": [14, 15], "sinc": [14, 15], "direct": [14, 15], "y_2": [14, 15], "y_1": [14, 15], "magnif": [14, 15], "limit": [14, 15], "paraxi": [14, 15], "approxim": [14, 15], "6": [14, 15], "120": [14, 15], "dot": [14, 15], "ll": [14, 15], "rm": [14, 15], "radian": [14, 15], "true": [14, 15], "microscopi": [6, 14, 15], "80": [14, 15], "still": [14, 15], "lecture1": 15, "2020": 15, "violat": 15, "primari": 15, "abber": 15, "classif": 15, "seidel": 15, "1821": 15, "1896": 15, "coma": [14, 15], "astigmat": [14, 15], "field": [6, 15], "curvatur": [14, 15], "distort": 15, "2z_1": 15, "chromat": 15, "measur": 15, "correct": 15, "shape": [14, 15], "nowadai": 15, "adapt": [6, 15], "spatial": 15, "max": 15, "larger": [14, 15], "solut": 15, "theta_c": [14, 15], "glass": [14, 15], "41": [14, 15], "8": [14, 15], "water": 15, "48": 15, "7": 15, "diamond": 15, "24": 15, "h": 15, "_2": 15, "o": 15, "33": 15, "loss": 15, "central": 15, "core": 15, "clad": 15, "lower": [14, 15], "low": 15, "multimod": 15, "gradient": 15, "mostli": 15, "silica": 15, "sio": 15, "44": 15, "46": 15, "001": 15, "02": 15, "overlin": 15, "phi": [14, 15], "theta": 15, "theta_a": 15, "sqrt": [14, 15], "na": 15, "qquad": 15, "ay_1": 15, "cy_1": 15, "arrai": [14, 15], "rr": 15, "transfer": 15, "bmatrix": 15, "convex": 15, "concav": 15, "whole": 15, "precalcul": 15, "matric": 15, "element": [14, 15], "m_nm_": 15, "m_1": 15, "rememb": 15, "free": 15, "perfect": 15, "cloack": 15, "appar": 15, "immit": 15, "condit": 15, "afoc": 15, "except": 15, "nbsphinx": 15, "math": [14, 15], "f_2": 15, "f_1": 15, "f_1f_2": 15, "f_3": 15, "t_2": 15, "t_1": 15, "four": 15, "t_1t_2": 15, "t_4": 15, "f_4": 15, "t_3": 15, "2t_1": 15, "2f_2": 15, "vec": 15, "op": 15, "int_a": 15, "mathrm": 15, "taken": 15, "proporton": 15, "extremum": 15, "neighbor": 15, "minimum": 15, "maximum": 15, "inflect": 15, "usual": 15, "pmatrix": 15, "y_0": 15, "opl": 15, "split": 15, "l_1": 15, "l_2": 15, "beta": 15, "equiv": 15, "2r_2": 15, "2f": [14, 15], "must": 15, "converg": 15, "global": 15, "nabla": 15, "trajectori": 15, "variat": [14, 15], "calculu": 15, "dx": 15, "partial": 15, "dy": 15, "dz": 15, "hspace": 15, "9cm": 15, "parametr": 15, "const": 15, "straight": 15, "selfoc": 15, "n_0": 15, "2y": 15, "parabol": 15, "profil": 15, "theta_0": 15, "squar": 15, "potenti": 15, "magnifi": 15, "simplifi": 15, "behind": 15, "virtual": 15, "real": 15, "construct": 15, "2x": 15, "da": 15, "aa": 15, "cosh": 15, "sinh": 15, "x_": 15, "y_": 15, "check": [14, 15], "veloc": 15, "horizont": 15, "n_h": 15, "newton": 15, "dt": 15, "u": 15, "coulomb": 15, "q": 15, "epsilon_0": 15, "r_": 15, "rf": 15, "chi": 15, "photon": 15, "prf": 15, "zeta": 15, "hbar": 15, "lambda": 15, "_k": 15, "wavelength": 15, "character": 15, "c_0": 15, "2u": 15, "superposit": 15, "u_1": 15, "u_2": 15, "a_1u_1": 15, "a_2u_2": 15, "langl": 15, "rangl": 15, "averag": 15, "cycl": 15, "nm": 15, "omega": 15, "amplitud": 15, "frequenc": [14, 15], "nu": 15, "phase": 15, "helmholtz": 15, "arg": 15, "wavefront": [14, 15], "ikr": 15, "outward": 15, "inward": 15, "_0": 15, "origin": [14, 15], "fresnel": 15, "axi": [14, 15], "taylor": 15, "align": 15, "2z": 15, "ikz": 15, "ik": 15, "kz": 15, "4z": 15, "n_f": 15, "2_m": 15, "theta_m": 15, "wavevector": 15, "nk_0": 15, "stai": 15, "lambda_0": 15, "_1": 15, "k_": 15, "1x": 15, "k_1": 15, "k_2": 15, "1z": 15, "_3": 15, "n_1k_0": 15, "k_3": 15, "n_2k_0": 15, "3x": 15, "tangenti": 15, "conserv": 15, "repres": [14, 15], "ik_0": 15, "label": [14, 15], "magnitud": 15, "k_0": 15, "ref": 15, "2a": 15, "imaginari": 15, "part": 15, "zero": 15, "indenpend": 15, "vari": 15, "slowli": 15, "eikon": 15, "proport": 15, "transmitt": 15, "ikd": 15, "thick": 15, "air": [14, 15], "d_0": 15, "h_0": 15, "ik_0d_0": 15, "valid": 15, "big": 15, "2r": 15, "ink_0d_0": 15, "constant": 15, "transform": [14, 15], "paraboloid": 15, "center": [15, 16], "diffract": 15, "grate": 15, "transmit": 15, "sampl": 15, "mu": 15, "camera": 15, "_": 15, "cam": 15, "int": 15, "i2": 15, "prime": 15, "contrast": 15, "dpc": 15, "i_t": 15, "i_b": 15, "superpos": 15, "i_1": 15, "i_2": 15, "u_1u_2": 15, "phi_1": 15, "phi_2": 15, "i_1i_2": 15, "i_0": 15, "i_": 15, "min": [14, 15], "translat": 15, "2i_0": 15, "exist": 15, "monochromat": 15, "u_m": 15, "i_3": 15, "between": 15, "seri": [6, 15], "im": 15, "peak": 15, "bar": 15, "mi_0": 15, "hu_1": 15, "u_3": 15, "2u_1": 15, "4r": 15, "ge": 15, "tild": 15, "finess": 15, "mathcal": 15, "simeq": 15, "2nd": 15, "spectral": 15, "rang": [14, 15], "interfer": 15, "laser": 15, "caviti": 15, "fabri": 15, "perot": 15, "interferomet": 15, "digit": 15, "holographi": 15, "track": 15, "domain": 15, "nu_1": 15, "nu_2": 15, "odd": 15, "2l": 15, "nu_q": 15, "nu_0": 15, "nu_f": 15, "interval": 15, "sum": [14, 15], "phasor": 15, "again": 15, "nu_ft": 15, "t_f": 15, "puls": 15, "ghz": 15, "1000": [14, 15], "lock": 15, "tau": 15, "comb": 15, "far": 15, "u_0": 15, "envelop": 15, "nabla_t": 15, "i2k": 15, "helmholz": 15, "2_t": 15, "a_1": 15, "rho": [14, 15], "xi": 15, "iz_0": 15, "z_0": 15, "rayleigh": 15, "w": 15, "radiu": [14, 15, 16], "a_0": 15, "w_0": 15, "paramet": 15, "perp": 15, "gg": 15, "invers": 15, "int_0": 15, "within": 15, "certain": [14, 15], "rho_0": 15, "86": 15, "99": 15, "waist": 15, "spot": 15, "size": 15, "theta_0z": 15, "increas": 15, "linearli": 15, "larg": 15, "diverg": 15, "simlarli": 15, "slit": 15, "heisenberg": 15, "depth": 15, "focu": 15, "2z_0": 15, "additon": 15, "retard": 15, "guoi": 15, "v_p": 15, "arctan": 15, "2_0": 15, "mw_0": 15, "locat": [14, 15], "m_r": 15, "q_2": 15, "aq_1": 15, "cq_1": 15, "abcd": 15, "q_1": 15, "focus": 15, "2_2": 15, "w_2": 15, "focal": 15, "non": [6, 14, 15], "g": 15, "u_": 15, "h_m": 15, "h_n": 15, "hermit": 15, "polynomi": 15, "h_1": 15, "20": 15, "h_2": 15, "wavefunct": 15, "mirror": 15, "l_p": 15, "il": 15, "2p": 15, "laguerr": 15, "radial": [14, 15], "azimuth": [14, 15], "neg": [14, 15], "helic": 15, "topolog": 15, "charg": 15, "gauss": 15, "electr": 15, "magnet": 15, "vector": 15, "maxwel": 15, "varepsilon_0": 15, "mu_0": 15, "36": 15, "permitt": 15, "permeabl": 15, "varepsilon": 15, "alreadi": [14, 15], "_0e": 15, "transvers": 15, "energi": 15, "densiti": 15, "u_b": 15, "flow": [6, 15], "poynt": 15, "rangle_t": 15, "e_0": 15, "eta_0": 15, "mu_0c_0": 15, "377": 15, "imped": 15, "vacuum": 15, "radiat": 15, "pressur": 15, "electron": 15, "cloud": 15, "displac": 15, "against": 15, "nucleu": 15, "dipol": 15, "elementari": 15, "11": 15, "75": 15, "13": 15, "mm": 15, "atom": 15, "glanc": 15, "per": 15, "unit": [14, 15], "volum": 15, "hat": 15, "g_b": 15, "oint_": 15, "q_b": 15, "int_v": 15, "dv": 15, "rho_b": 15, "nq": 15, "flux": 15, "assum": [14, 15], "rest": 15, "orient": 15, "ionic": 15, "degener": 15, "propto": 15, "histori": 15, "p_i": 15, "sum_j": 15, "chi_": 15, "ij": 15, "e_j": 15, "d_i": 15, "varepsilon_": 15, "int_": 15, "a_2": 15, "a_3": 15, "e_": 15, "e_a": 15, "delai": 15, "nfrac": 15, "sim": 15, "plate": 15, "suscept": 15, "scalar": 15, "varepsilon_r": 15, "damp": 15, "harmon": 15, "oscil": 15, "ddot": 15, "sigma": 15, "omega_0": 15, "x_0": 15, "respons": 15, "eta": 15, "q_e": 15, "nq_e": 15, "polariz": 15, "chi_0": 15, "treatment": 15, "ne": 15, "f_j": 15, "omega_j": 15, "sigma_j": 15, "strength": 15, "f_": 15, "12": [14, 15], "m_l": 15, "hbar\u00b2": 15, "e_2": 15, "e_1": 15, "lorentz": 15, "kappa": 15, "2i": 15, "2k_0": 15, "coeffici": 15, "weakli": 15, "absorb": 15, "dn": 15, "intim": 15, "stem": 15, "polarizazit": 15, "a_x": 15, "_x": 15, "a_i": 15, "_y": 15, "phi_x": 15, "phi_i": 15, "e_x": 15, "e_i": 15, "e_xe_i": 15, "a_xa_i": 15, "half": 15, "2a_xa_i": 15, "circ": 15, "ellipt": 15, "neq": 15, "formal": 15, "j_1": 15, "j_2": 15, "a_": 15, "1y": 15, "determin": 15, "under": [14, 15], "rai": 6, "facet": 6, "research": 6, "involv": [6, 14], "propgat": 6, "fundament": 6, "matter": 6, "disord": 6, "quanta": 6, "superresolut": 6, "fastest": 6, "grow": 6, "fourier": 6, "anisotrop": 6, "lai": 6, "patch": 16, "defin": [14, 16], "arc": 16, "degre": [14, 16], "add_patch": 16, "aspect": 16, "set_aspect": 16, "set_xlim": 16, "set_ylim": 16, "draw": 14, "further": 14, "hit": 14, "nonlinear": 14, "angular": 14, "obtain": 14, "expand": 14, "bracket": 14, "lead": 14, "note": 14, "seen": 14, "latter": 14, "actual": 14, "level": 14, "deriv": 14, "orthonorm": 14, "wide": 14, "did": 14, "disk": 14, "particularli": 14, "becaus": 14, "orthogon": 14, "inner": 14, "product": 14, "circl": 14, "decompos": 14, "polar": 14, "coordin": 14, "z_n": 14, "r_n": 14, "geq": 14, "leq": 14, "2k": 14, "method": 14, "being": 14, "noll": 14, "pair": 14, "order": 14, "ophthalmologi": 14, "human": 14, "ey": 14, "decomposit": 14, "simpler": 14, "defocu": 14, "etc": 14, "radial_polynomi": 14, "zeros_lik": 14, "ab": 14, "factori": 14, "zernike_polynomi": 14, "linspac": 14, "400": 14, "xx": 14, "yy": 14, "meshgrid": 14, "arctan2": 14, "mask": 14, "nan": 14, "flatten": 14, "imshow": 14, "extent": 14, "off": 14, "tight_layout": 14, "spherical_surfac": 16, "outgo": 14, "characterist": 14, "onto": 14, "revers": 14, "anymor": 14, "out": 14, "phenomenon": 14, "fantast": 14, "54": 14, "snell_law": 14, "theta1_degre": 14, "theta1_radian": 14, "sin_theta2": 14, "theta2_radian": 14, "n1_glass": 14, "n2_air": 14, "theta2_glass_to_air": 14, "dpi": 14, "150": 14, "linestyl": 14, "critic": 14, "\u03b8c": 14, "xlabel": 14, "\u03b8_1": 14, "ylabel": 14, "\u03b8_2": 14, "xlim": 14, "ylim": 14, "grid": 14, "61": 14, "62": [], "html_code": [], "id": 14, "mycanva": [], "style": 14, "1px": [], "solid": [], "000000": [], "support": [], "html5": [], "tag": [], "script": 14, "var": 14, "getelementbyid": [], "ctx": [], "getcontext": [], "rectangl": [], "fillstyl": [], "0000ff": [], "fillrect": [], "63": [], "mybutton": [], "me": [], "handlebuttonclick": [], "alert": [], "addeventlisten": [], "64": [], "createel": [], "cdnj": [], "cloudflar": [], "ajax": [], "lib": [], "d3": 14, "appendchild": [], "consol": 14, "log": [], "window": [], "65": [], "svg_script": [], "append": 14, "attr": 14, "300": [], "stroke": [], "grai": [], "cyan": [], "130": [], "cx": 14, "cy": 14, "transit": 14, "durat": 14, "10000": 14, "69": [], "load_d3_in_cell_output": 14, "d3j": 14, "v6": 14, "get_ipython": 14, "event": 14, "regist": 14, "pre_run_cel": 14, "70": [], "div": 14, "ensur": 14, "50": 14, "89": 14, "92": 14, "290": 14, "eas": 14, "easelinear": 14}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"welcom": 6, "experiment": [], "physik": [], "3": 15, "cours": 4, "inform": [], "jupyt": 12, "notebook": [11, 12, 13], "lectur": [6, 9], "1": [6, 8, 15], "indic": 6, "tabl": 6, "assign": 0, "exam": 1, "instructor": 2, "resourc": 3, "molecular": 3, "nanophoton": 3, "group": 3, "python": 3, "document": [3, 12], "tutori": 3, "schedul": 4, "thi": 5, "websit": 5, "introduct": [6, 12], "photon": 6, "overview": 7, "exercis": 8, "content": 9, "enter": 10, "code": [10, 13], "markdown": 10, "basic": 10, "head": 10, "embed": 10, "latex": 10, "equat": 10, "imag": 10, "video": 10, "an": 11, "empti": 11, "what": [12, 15], "i": 12, "editor": [12, 13], "kernel": [12, 13], "edit": 13, "mode": 13, "command": 13, "keyboard": 13, "navig": 13, "run": 13, "manag": 13, "gener": [14, 15], "optic": [14, 15], "rai": [14, 15], "law": [14, 15], "reflect": [14, 15], "refract": [14, 15], "spheric": [14, 15], "boundari": [14, 15], "geometr": 15, "total": [14, 15], "intern": [14, 15], "guid": 15, "light": 15, "fiber": 15, "step": 15, "index": 15, "meridion": 15, "skew": 15, "numer": 15, "apertur": 15, "matrix": 15, "For": 15, "exampl": 15, "cloak": 15, "fermat": 15, "": 15, "principl": 15, "thin": 15, "len": [14, 15], "formul": 15, "differenti": 15, "form": 15, "compon": 15, "grin": 15, "you": 15, "should": 15, "know": 15, "mirag": 15, "effect": 15, "over": 15, "hot": 15, "street": 15, "bf": 15, "f": 15, "m": 15, "cdot": 15, "correspond": 15, "quantiti": 15, "momentum": 15, "tweezer": 15, "wave": 15, "gaussian": 15, "beam": 15, "propierti": 15, "transmiss": 15, "through": 15, "higher": 15, "order": 15, "cylindr": 15, "coordin": 15, "electromagnet": 15, "dielectr": 15, "media": 15, "linear": 15, "nondispers": 15, "homogen": 15, "isotrop": 15, "inhomogen": 15, "anisotrop": 15, "dispers": 15, "nonlinear": 15, "microscop": 15, "model": 15, "p": 15, "reson": 15, "medium": 15, "absorpt": 15, "kramer": 15, "kronig": 15, "4": 15, "polar": 15, "conjug": 14, "plane": 14, "biconvex": 14, "aberr": 14, "character": 14, "zernik": 14, "polynomi": 14}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"Assignments": [[0, "assignments"]], "Exams": [[1, "exams"]], "Instructor": [[2, "instructor"]], "Resources": [[3, "resources"]], "Molecular Nanophotonics Group": [[3, "molecular-nanophotonics-group"]], "Python Documentation": [[3, "python-documentation"]], "Python Tutorials": [[3, "python-tutorials"]], "Course Schedule": [[4, "course-schedule"]], "This Website": [[5, "this-website"]], "Overview": [[7, "overview"]], "Exercise 1": [[8, "exercise-1"]], "Lecture Contents": [[9, "lecture-contents"]], "Entering code": [[10, "Entering-code"]], "Entering Markdown": [[10, "Entering-Markdown"]], "Markdown basics": [[10, "Markdown-basics"]], "Headings": [[10, "Headings"]], "Embedded code": [[10, "Embedded-code"]], "LaTeX equations": [[10, "LaTeX-equations"]], "Images": [[10, "Images"]], "Videos": [[10, "Videos"]], "An empty notebook": [[11, "An-empty-notebook"]], "Introduction to Jupyter": [[12, "Introduction-to-Jupyter"]], "What is Jupyter Notebook?": [[12, "What-is-Jupyter-Notebook?"]], "Notebook editor": [[12, "Notebook-editor"], [13, "Notebook-editor"]], "Kernels": [[12, "Kernels"]], "Notebook documents": [[12, "Notebook-documents"]], "Edit mode": [[13, "Edit-mode"]], "Command mode": [[13, "Command-mode"]], "Keyboard navigation": [[13, "Keyboard-navigation"]], "Running code": [[13, "Running-code"]], "Managing the kernel": [[13, "Managing-the-kernel"]], "Welcome to the Introduction to Photonics 1!": [[6, "welcome-to-the-introduction-to-photonics-1"]], "Lecture 1:": [[6, null]], "Indices and tables": [[6, "indices-and-tables"]], "General Optics": [[14, "General-Optics"]], "Ray Optics": [[14, "Ray-Optics"]], "Law of reflection": [[14, "Law-of-reflection"], [15, "Law-of-reflection"]], "Law of refraction": [[14, "Law-of-refraction"], [15, "Law-of-refraction"]], "Refraction on spherical boundary": [[14, "Refraction-on-spherical-boundary"], [15, "Refraction-on-spherical-boundary"]], "Conjugated Planes": [[14, "Conjugated-Planes"]], "Biconvex Lens": [[14, "Biconvex-Lens"]], "Aberration Characterization and Zernike Polynomials": [[14, "Aberration-Characterization-and-Zernike-Polynomials"]], "Total Internal Reflection": [[14, "Total-Internal-Reflection"]], "1. General Optics": [[15, "1.-General-Optics"]], "Geometrical Optics": [[15, "Geometrical-Optics"]], "Total internal reflection": [[15, "Total-internal-reflection"]], "Guiding light fibers": [[15, "Guiding-light-fibers"]], "Step-index fiber": [[15, "Step-index-fiber"]], "Meridional ray": [[15, "Meridional-ray"]], "Skewed ray": [[15, "Skewed-ray"]], "Numerical aperture": [[15, "Numerical-aperture"]], "Matrix Optics": [[15, "Matrix-Optics"], [15, "id5"]], "For example: Optical cloaking": [[15, "For-example:-Optical-cloaking"]], "Fermat\u2019s Principle": [[15, "Fermat's-Principle"]], "Refraction": [[15, "Refraction"]], "Thin lens": [[15, "Thin-lens"]], "Formulation of Fermat\u2019s principle": [[15, "Formulation-of-Fermat's-principle"]], "Differential form in components": [[15, "Differential-form-in-components"]], "GRIN lens": [[15, "GRIN-lens"]], "What you should know:": [[15, "What-you-should-know:"]], "Mirage effect over a hot street": [[15, "Mirage-effect-over-a-hot-street"]], "{\\bf F = m \\cdot a} optics": [[15, "{\\bf-F-=-m-\\cdot-a}-optics"]], "Corresponding quantities": [[15, "Corresponding-quantities"]], "Ray optics and momentum": [[15, "Ray-optics-and-momentum"]], "Optical Tweezers": [[15, "Optical-Tweezers"]], "Wave Optics": [[15, "Wave-Optics"]], "Gaussian beam": [[15, "Gaussian-beam"]], "Propierties": [[15, "Propierties"]], "Transmission through a lens": [[15, "Transmission-through-a-lens"]], "Higher order Gaussian beams": [[15, "Higher-order-Gaussian-beams"]], "Cylindrical coordinates": [[15, "Cylindrical-coordinates"]], "1.3 Electromagnetic Optics": [[15, "1.3-Electromagnetic-Optics"]], "Dielectric media": [[15, "Dielectric-media"]], "linear media": [[15, "linear-media"]], "nondispersive media": [[15, "nondispersive-media"]], "homogeneous media": [[15, "homogeneous-media"]], "isotropic media": [[15, "isotropic-media"]], "inhomogeneous media": [[15, "inhomogeneous-media"]], "anisotropic media": [[15, "anisotropic-media"]], "dispersive media": [[15, "dispersive-media"]], "nonlinear media": [[15, "nonlinear-media"]], "Linear, nondispersive, homogeneous, isotropic media": [[15, "Linear,-nondispersive,-homogeneous,-isotropic-media"]], "microscopic model of P": [[15, "microscopic-model-of-P"]], "resonant medium": [[15, "resonant-medium"]], "dispersion": [[15, "dispersion"]], "absorption and dispersion": [[15, "absorption-and-dispersion"]], "Kramers\u2013Kronig": [[15, "Kramers\u2013Kronig"]], "1.4 Polarization Optics": [[15, "1.4-Polarization-Optics"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["course-info/assignments", "course-info/exam", "course-info/instructor", "course-info/resources", "course-info/schedule", "course-info/website", "index", "lectures/Intro/overview", "lectures/L1/assignment_1", "lectures/L1/overview_1", "notebooks/Intro/EditCells", "notebooks/Intro/Empty", "notebooks/Intro/Introduction2Jupyter", "notebooks/Intro/NotebookEditor", "notebooks/L1/1_ray_optics", "notebooks/L1/Lecture1", "notebooks/L1/spherical_surface"], "filenames": ["course-info/assignments.rst", "course-info/exam.rst", "course-info/instructor.rst", "course-info/resources.rst", "course-info/schedule.rst", "course-info/website.rst", "index.rst", "lectures/Intro/overview.rst", "lectures/L1/assignment_1.rst", "lectures/L1/overview_1.rst", "notebooks/Intro/EditCells.ipynb", "notebooks/Intro/Empty.ipynb", "notebooks/Intro/Introduction2Jupyter.ipynb", "notebooks/Intro/NotebookEditor.ipynb", "notebooks/L1/1_ray_optics.ipynb", "notebooks/L1/Lecture1.ipynb", "notebooks/L1/spherical_surface.ipynb"], "titles": ["Assignments", "Exams", "Instructor", "Resources", "Course Schedule", "This Website", "Welcome to the Introduction to Photonics 1!", "Overview", "Exercise 1", "Lecture Contents", "Entering code", "An empty notebook", "Introduction to Jupyter", "Notebook editor", "General Optics", "1. General Optics", "<no title>"], "terms": {"thi": [0, 1, 3, 6, 10, 11, 12, 13, 14, 15, 16], "i": [1, 4, 5, 6, 8, 10, 13, 14, 15], "websit": [3, 10], "physic": [3, 5, 6, 7, 14], "schedul": [], "assign": [4, 5], "exam": [], "resourc": 5, "molecular": 15, "nanophoton": [], "group": 1, "python": [5, 9, 10, 12], "document": 10, "tutori": [], "instructor": [], "overview": [], "introduct": [1, 3, 9], "what": [1, 14], "editor": 7, "kernel": [], "edit": [10, 12], "mode": [10, 14, 15], "command": 10, "keyboard": 10, "navig": [], "run": 12, "code": [0, 1, 5, 7, 12, 14], "manag": [], "enter": [7, 13], "markdown": [7, 8, 12, 13], "basic": [1, 9, 12, 13], "head": [], "embed": 12, "latex": [8, 12], "equat": [12, 14, 15], "imag": [12, 14, 15], "video": [0, 4, 5], "content": [5, 10, 12, 13], "exercis": [], "index": [6, 14], "modul": [6, 9, 10, 14, 15], "search": 6, "page": [5, 6, 10, 11, 12, 13, 14, 15, 16], "The": [0, 1, 4, 5, 7, 8, 12, 13, 14, 15], "lectur": [0, 4, 5], "held": 0, "complet": [0, 5, 10, 12], "onlin": [0, 4, 5], "year": 0, "we": [0, 1, 4, 5, 6, 8, 9, 10, 13, 14, 15], "suppli": 0, "also": [0, 1, 4, 5, 10, 12, 14, 15], "problem": [0, 1], "set": [0, 13, 14, 15, 16], "everi": [0, 4, 5], "week": [0, 4, 5], "all": [0, 1, 5, 12, 14, 15], "student": [0, 1], "come": [0, 4, 14, 15], "jupyt": [0, 1, 5, 7, 8, 9, 10, 13], "notebook": [0, 1, 4, 5, 7, 9, 10, 14, 15, 16], "individu": [0, 1, 10, 12], "pleas": [0, 4, 5], "fill": [0, 14], "answer": 0, "your": [0, 1, 5, 10, 12, 13], "ar": [0, 1, 3, 5, 9, 10, 12, 13, 14, 15], "ask": [0, 5], "return": [0, 10, 12, 14], "befor": [0, 15], "tuesdai": [0, 4], "morn": 0, "you": [0, 1, 3, 4, 5, 8, 9, 10, 12, 13, 14], "receiv": 0, "web": [0, 5, 12], "address": [0, 8, 14], "our": [0, 5, 8], "server": [0, 4, 5, 8, 12], "well": [0, 3, 5, 8, 10, 12, 15], "login": [0, 5, 8], "password": [0, 5, 8], "find": [0, 1, 3, 5, 15], "below": [0, 3, 10, 13, 14, 15], "short": [0, 14, 15], "how": [0, 10, 15], "download": [0, 5], "close": [1, 5, 14, 15], "cours": [1, 3, 5, 6, 7, 15], "an": [1, 4, 5, 8, 10, 12, 13, 14, 15], "form": [1, 10, 12, 14], "final": [1, 12, 14], "project": [1, 5, 10, 15], "shall": [1, 15], "topic": [1, 6, 7, 14], "choic": 1, "one": [1, 6, 10, 13, 14, 15], "provid": [1, 8, 10, 12, 13, 14], "exampl": [1, 10, 14], "hand": 1, "each": [1, 5, 12, 14, 15], "requir": [1, 5, 15], "No": 1, "work": [1, 5, 10, 15], "allow": [1, 5, 12, 13, 14], "follow": [1, 5, 10, 13, 14, 15], "outlin": 1, "introduc": [1, 6], "cover": 1, "motiv": 1, "go": [1, 5, 10, 13, 14, 15], "do": [1, 10, 14, 15], "should": [1, 10], "theoret": 1, "descript": [1, 6, 14], "solv": [1, 14, 15], "result": [1, 12, 14], "discuss": [1, 3, 5, 14], "develop": 1, "anot": 1, "step": [1, 14, 16], "It": [1, 5, 6, 8, 12, 14, 15], "import": [1, 10, 13, 14, 15, 16], "highlight": 1, "consequ": [1, 15], "summari": 1, "summar": 1, "notbook": 1, "grade": [1, 15], "accord": [1, 14], "common": [1, 14], "scheme": 1, "email": [2, 12], "lastnam": 2, "physik": 2, "uni": 2, "leipzig": 2, "de": 2, "prof": 2, "dr": 2, "frank": 2, "cicho": [2, 15], "linn\u00e9str": 2, "5": [2, 13, 14, 15, 16], "04103": 2, "offic": 2, "322": 2, "phone": 2, "0341": 2, "97": 2, "32571": 2, "There": [3, 10, 12, 13, 14, 15], "ton": 3, "addit": [3, 12, 15], "structur": 3, "net": [3, 10], "onli": [3, 10, 14, 15], "veri": [3, 14], "small": [3, 14, 15], "select": [3, 10, 13, 14], "comput": [3, 5, 6, 12, 14], "base": [3, 5, 12, 14, 15], "model": [3, 5, 14], "mona": [3, 5], "forum": [3, 5], "matplotlib": [3, 15, 16], "panda": 3, "scienc": [3, 6], "nice": [3, 10], "updat": [4, 5, 14, 15], "weekli": 4, "thu": [4, 12, 13, 15], "expect": 4, "start": [4, 5, 6, 9, 10, 12], "april": 4, "7th": 4, "1": [4, 10, 13, 14, 16], "30": [4, 7], "pm": [4, 15], "new": [4, 5, 10, 13, 15], "As": [4, 8, 14], "materi": [4, 14, 15], "avail": [4, 12, 13], "can": [4, 5, 9, 10, 12, 13, 14, 15], "back": [4, 12], "studi": 4, "whenev": 4, "suitabl": [4, 14], "add": [4, 10, 12, 16], "explain": [4, 5, 10], "detail": [4, 12], "explor": [4, 5, 6, 9, 14, 15], "especi": 4, "mybind": [4, 5, 13], "thei": [4, 10, 14], "help": [4, 10, 12], "finish": [4, 13], "contain": [5, 6, 12, 14, 15], "inform": [5, 14, 15], "yet": [5, 12, 14], "accompani": [5, 12], "mai": [5, 10, 12], "get": [5, 15], "along": [5, 15], "just": [5, 10, 12, 14, 15], "read": [5, 12], "And": [5, 10], "give": [5, 14, 15], "chanc": 5, "interact": [5, 6, 12, 14, 15], "have": [5, 9, 10, 13, 14, 15], "creat": [5, 9, 10, 12, 14, 15, 16], "which": [5, 10, 12, 13, 14, 15], "reach": [5, 14], "ha": [5, 12, 13, 14, 15], "differ": [5, 12, 13, 14, 15], "categori": 5, "hope": 5, "us": [5, 6, 10, 12, 13, 14, 15], "intens": [5, 15], "question": 5, "guid": 5, "from": [5, 6, 10, 11, 12, 13, 14, 15, 16], "here": [5, 10, 12, 14, 15], "sever": [5, 14], "learn": 5, "program": [5, 12, 14, 15], "therebi": 5, "make": [5, 8, 10, 13, 14, 15, 16], "some": [5, 10, 14], "great": [5, 10], "tool": 5, "like": [5, 10, 12, 13, 14, 15], "servic": [5, 12], "host": 5, "http": [5, 10, 14], "org": [5, 12, 14], "binder": 5, "offer": 5, "easi": [5, 10], "place": 5, "share": [5, 12, 15], "environ": [5, 9, 12], "everyon": 5, "when": [5, 10, 12, 13, 14], "notic": 5, "icon": 5, "indic": [5, 13, 14, 15], "webpag": 5, "rather": 5, "than": [5, 10, 15], "look": [5, 13, 14, 15, 16], "click": [5, 10], "open": [5, 9, 13, 15], "patient": 5, "wait": 5, "until": [5, 13], "temporarili": 5, "If": [5, 10, 12, 13, 14, 15], "show": [5, 12, 13, 14, 15, 16], "inact": 5, "long": 5, "connect": [5, 12, 13], "finsih": 5, "keep": 5, "copi": [5, 13], "ahead": 5, "empti": 5, "github": [5, 12], "com": 5, "collabor": 5, "includ": [5, 10, 12, 14], "version": [5, 12, 13], "control": [5, 10, 12, 13, 14, 15], "In": [5, 6, 10, 13], "upper": 5, "right": [5, 10, 13, 14, 15, 16], "corner": [5, 13], "link": [5, 10], "repositori": 5, "anaconda": 5, "packag": 5, "www": 5, "distribut": 5, "privid": 5, "want": [5, 10, 14, 15], "home": 5, "without": [5, 8, 12, 15], "access": [5, 10], "good": [5, 10], "instal": [5, 12], "languag": [9, 10, 12], "kind": [], "scientif": [], "engin": [], "task": [], "analyz": [], "plot": [12, 14, 15, 16], "data": [9, 12], "numer": [], "difficult": [14, 15], "even": 14, "imposs": [], "analyt": [], "freeli": [], "been": 13, "due": 15, "its": [10, 12, 14], "modular": [], "extend": [], "nearli": [], "infinit": [], "number": [14, 15], "purpos": [], "intend": [], "aim": [], "more": [6, 10, 13, 14, 15], "beginn": [], "advanc": [6, 13, 14], "user": [12, 13], "interest": [14, 15], "throughout": [], "function": [10, 14, 15], "curv": [14, 15], "fit": [], "write": [10, 12, 15], "file": 12, "encount": [], "dure": [], "anim": [], "insid": [], "simul": 10, "process": [12, 13], "mechan": [14, 15], "electrostat": [], "wave": [6, 7, 14], "quantum": 15, "optic": 6, "At": [], "end": [10, 14, 15], "machin": [], "now": [10, 14, 15], "becom": 10, "present": [], "comprehens": [], "list": [8, 10], "stimul": [], "curios": [], "slight": [], "syntax": [], "alwai": [14, 15], "refer": [], "3": [10, 14, 16], "standard": [], "experiment": 7, "iii": 7, "deal": 7, "two": [7, 10, 13, 14, 15], "major": 7, "electromagnet": [6, 7, 14], "particl": [7, 15], "environn": 7, "00": [7, 9], "05": 7, "09": [7, 9], "43": 7, "16": 7, "15": [7, 9, 15], "first": [8, 10, 14, 15], "jupyterhub": 8, "ip": 8, "yourself": 8, "familiar": 8, "interfac": [8, 12, 13, 14, 15], "correspond": [8, 14], "classic": [8, 15], "ani": [8, 12, 13, 14], "tab": [8, 10, 12], "string": 8, "dictionari": 8, "after": [9, 15], "hopefulli": 9, "abl": [9, 13], "variabl": [9, 15], "type": [9, 10, 12, 13, 14], "01": [9, 15], "23": 9, "oper": [9, 13], "comparison": 9, "42": 9, "22": [9, 15], "namespac": [9, 10], "45": [9, 15], "03": [9, 15], "wa": [10, 11, 12, 13, 14, 15, 16], "gener": [6, 10, 11, 12, 13, 16], "intro": [10, 11, 12, 13], "editcel": 10, "ipynb": [10, 11, 12, 13, 14, 15, 16], "pretti": 10, "cell": [10, 12, 13], "multipl": 10, "line": [10, 15], "press": [10, 13], "block": 10, "identifi": [10, 14], "belong": [10, 14, 15], "togeth": [10, 14], "ident": 10, "longer": 10, "later": [10, 14], "To": 10, "indent": 10, "either": 10, "whitespac": 10, "comment": 10, "ad": 10, "annot": 10, "someon": 10, "els": [10, 14, 15], "understand": [10, 12], "singl": [6, 10, 14, 15], "charact": 10, "front": 10, "over": [10, 12, 14], "same": [10, 15], "docstr": 10, "text": [10, 12, 13, 14, 15], "2": [10, 14, 15, 16], "typic": [10, 15], "def": [10, 14, 15], "x": [10, 13, 14, 15], "calcul": [10, 15], "argument": 10, "float": 10, "integ": [10, 14], "valu": [10, 14], "y": [10, 13, 14, 15], "time": [10, 14, 15], "don": [10, 12], "t": [10, 12, 13, 14, 15], "forget": 10, "__main__": 10, "extrem": 10, "wai": [10, 12, 14, 15], "everyth": 10, "realli": [10, 14], "chang": [10, 13, 14, 15], "action": 10, "menu": [10, 13], "hardwar": [10, 13], "shortcut": [10, 13], "m": [10, 13, 14], "popular": 10, "markup": [10, 12], "superset": 10, "html": [10, 12, 14], "Its": 10, "specif": [10, 12, 14], "found": 10, "daringfirebal": 10, "render": [10, 12, 13], "unrend": 10, "see": [10, 13, 14], "format": [10, 12, 15], "represent": [10, 12], "": [10, 12, 13, 14], "raw": [10, 12, 13], "sourc": [10, 14, 15], "button": [10, 13], "shift": [10, 13, 15], "doubl": 10, "appear": 10, "put": 10, "ital": 10, "bold": 10, "build": 10, "nest": 10, "item": 10, "enumer": 10, "subitem": 10, "subsubitem": 10, "second": [10, 14, 15], "third": [10, 15], "anoth": [10, 13, 14], "sublist": 10, "blockquot": 10, "beauti": 10, "better": 10, "ugli": 10, "explicit": 10, "implicit": 10, "simpl": [6, 10, 12, 15], "complex": [6, 10, 14, 15], "complic": 10, "flat": 10, "spars": 10, "dens": 10, "readabl": 10, "count": 10, "special": [10, 14, 15], "case": [10, 14, 15], "aren": 10, "enough": 10, "break": [10, 14], "rule": 10, "although": 10, "practic": 10, "beat": [10, 15], "puriti": 10, "error": [10, 15], "never": 10, "pass": [10, 14], "silent": 10, "unless": 10, "explicitli": 10, "silenc": 10, "face": 10, "ambigu": 10, "refus": 10, "temptat": 10, "guess": 10, "prefer": 10, "obviou": 10, "re": [10, 15], "dutch": 10, "often": [10, 15], "implement": 10, "hard": 10, "bad": 10, "idea": 10, "honk": 10, "let": [10, 15], "those": 10, "shorthand": 10, "space": [10, 15], "emb": 10, "meant": [10, 12], "illustr": 10, "instead": 10, "execut": [10, 12, 13], "f": [10, 14], "other": [10, 12, 14, 15], "0": [10, 13, 14, 15, 16], "n": [10, 14, 15], "printf": 10, "hello": 10, "d": [10, 13, 14, 15], "4": [10, 14, 16], "courtesi": 10, "mathjax": 10, "mathemat": [10, 14, 15], "express": [10, 14, 15], "both": [10, 15], "inlin": 10, "e": [10, 13, 14, 15], "pi": [10, 14, 15], "displai": [10, 12, 14], "sum_": [10, 14, 15], "infti": [10, 15], "frac": [10, 14, 15], "surround": 10, "own": [10, 12], "directli": 10, "integr": [10, 14, 15], "altern": 10, "url": [10, 12], "src": [10, 14], "mov": 10, "movi": 10, "mp4": 10, "width": [10, 14, 15], "320": 10, "height": [10, 14], "200": [10, 14], "preload": 10, "store": 10, "local": [10, 15], "youtub": 10, "ipython": [10, 14], "9": [10, 14, 15], "youtubevideo": 10, "qllx32jugzi": 10, "600": [10, 15], "introduction2jupyt": 12, "A": [12, 13, 15], "browser": 12, "enabl": 12, "These": [12, 14], "self": 12, "record": 12, "convert": 12, "variou": 12, "system": [12, 14, 15], "git": 12, "nbviewer": 12, "combin": 12, "three": [12, 15], "compon": [12, 14], "applic": [6, 12, 14], "desktop": 12, "separ": [12, 13, 15], "given": [12, 14, 15], "output": 12, "handl": 12, "thing": 12, "widget": [12, 14, 15], "introspect": 12, "visibl": 12, "input": 12, "rich": 12, "media": [6, 12], "object": [12, 14, 15], "brows": 12, "individual": 12, "arbitrari": 12, "oder": [12, 14, 15], "png": 12, "svg": [12, 14], "pdf": 12, "javascript": [12, 14], "bind": 12, "visual": [12, 14], "reactiv": 12, "side": [12, 15], "bound": 12, "almost": 12, "dedic": [12, 13], "100": [12, 13, 14], "julia": 12, "r": [12, 13, 14, 15], "rubi": 12, "haskel": 12, "scala": 12, "mani": [6, 12, 13, 14, 15], "default": 12, "pick": 12, "commun": 12, "json": 12, "zeromq": 12, "websocket": 12, "messag": 12, "protocol": 12, "describ": [12, 14, 15], "most": [12, 13, 15], "need": [12, 14, 15], "know": [12, 14], "about": 12, "session": 12, "filesystem": 12, "extens": 12, "easili": 12, "consist": 12, "linear": [6, 12, 14], "sequenc": 12, "live": 12, "narr": 12, "unformat": 12, "modif": 12, "nbconvert": 12, "intern": 12, "binari": 12, "encod": 12, "base64": 12, "them": [12, 14], "manipul": [6, 12, 13], "programmat": 12, "export": 12, "static": 12, "restructeredtext": 12, "slide": 12, "reveal": 12, "j": [12, 13, 14, 15], "util": 12, "furthermor": 12, "public": 12, "via": 12, "load": 12, "notebookeditor": 13, "essenti": 13, "where": [13, 14], "jupyterlab": 13, "blue": [13, 14, 15], "border": 13, "prompt": 13, "area": 13, "normal": [13, 14, 15], "grei": 13, "io": 13, "devic": 13, "modal": 13, "optim": 13, "effici": 13, "usag": 13, "made": [13, 15], "possibl": [13, 15], "activ": 13, "rel": [13, 15], "few": 13, "entir": 13, "so": [13, 15], "ones": 13, "switch": 13, "mod": 13, "esc": 13, "k": [13, 14, 15], "current": [13, 15], "save": 13, "insert": [13, 14, 15], "abov": [13, 14, 15], "b": [13, 15], "pasteboard": 13, "cut": 13, "c": [13, 14, 15], "v": [13, 15], "past": 13, "delet": 13, "z": [13, 14, 15], "undo": 13, "interrupt": 13, "restart": 13, "bottom": 13, "panel": 13, "10": [13, 14, 15], "print": 13, "coupl": [13, 15], "move": 13, "option": [13, 16], "call": [13, 14, 15], "top": [13, 14], "report": 13, "state": [13, 14, 15], "mean": [13, 14, 15], "readi": 13, "busi": 13, "tap": 13, "reconnect": 13, "try": [13, 15], "won": 13, "l1": [14, 15, 16], "1_ray_opt": 14, "ipywidget": [14, 15], "pyplot": [15, 16], "plt": [14, 15, 16], "numpi": 15, "np": [14, 15], "deliv": 14, "simplest": [14, 15], "light": [6, 14], "propag": [6, 14, 15], "despit": 14, "simplif": 14, "power": [6, 14, 15], "howev": 14, "doe": 14, "insight": 14, "govern": 14, "geometr": 14, "therefor": [14, 15], "assumpt": [14, 15], "travel": [14, 15], "emit": [14, 15], "detect": [14, 15], "detector": [14, 15], "effect": 14, "medium": 14, "c_": [14, 15], "take": [14, 15], "distanc": [14, 15], "nd": [14, 15], "amount": [14, 15], "path": [14, 15], "length": [14, 15], "satisfi": [14, 15], "neither": 14, "speed": [14, 15], "nor": 14, "someth": 14, "consid": 14, "infer": 14, "observ": 14, "figur": [14, 15, 16], "angl": [14, 15, 16], "incid": [14, 15], "equal": [14, 15, 16], "begin": [14, 15], "theta_": [14, 15], "n_": [14, 15], "sin": [14, 15], "known": [14, 15], "snell": [14, 15], "relat": [14, 15], "theta_1": [14, 15], "theta_2": [14, 15], "With": [14, 15], "situat": [14, 15], "occur": [14, 15], "total": [], "fig": [14, 15, 16], "ax": [14, 15, 16], "subplot": [14, 15, 16], "figsiz": [14, 15], "canva": [14, 15], "header_vis": [14, 15], "fals": [14, 15], "n1": [14, 15], "n2": [14, 15], "90": [14, 15, 16], "remov": [14, 15], "old": 15, "cla": 15, "theta1": [14, 15, 16], "180": [15, 16], "theta2": [15, 16], "arcsin": [14, 15], "set_titl": [14, 15], "axvlin": [14, 15], "l": 15, "04": 15, "n_2": [14, 15], "n_1": [14, 15], "round": 15, "axhlin": 15, "color": [14, 15], "lw": 15, "quiver": 15, "co": [14, 15], "scale": 15, "pivot": 15, "tip": 15, "red": 15, "lens": [14, 15], "surfac": [14, 15], "depend": [14, 15], "posit": [14, 15], "2d": [14, 15], "circular": [14, 15], "diagram": [14, 15], "definit": [14, 15], "alpha": [14, 15], "delta": [14, 15], "tan": [14, 15], "z_2": [14, 15], "z_1": [14, 15], "gamma": 15, "approx": [14, 15], "replac": 15, "n_2r": [14, 15], "conjug": 15, "plane": 15, "quad": [14, 15], "rightarrow": [14, 15], "yz_2": [14, 15], "left": [14, 15], "z_2y": [14, 15], "independ": 15, "up": [14, 15], "point": [14, 15], "foundat": [6, 14, 15], "biconvex": 15, "len": [], "appli": [14, 15], "formula": 15, "twice": 15, "theta_t": [14, 15], "nr_1": [14, 15], "r_2": [14, 15], "r_1": [14, 15], "maker": [14, 15], "tell": [14, 15], "radii": [14, 15], "flip": [14, 15], "sign": [14, 15], "sinc": [14, 15], "direct": [14, 15], "y_2": [14, 15], "y_1": [14, 15], "magnif": [14, 15], "limit": [14, 15], "paraxi": [14, 15], "approxim": [14, 15], "6": [14, 15], "120": [14, 15], "dot": [14, 15], "ll": [14, 15], "rm": [14, 15], "radian": [14, 15], "true": [14, 15], "microscopi": [6, 14, 15], "80": [14, 15], "still": [14, 15], "lecture1": 15, "2020": 15, "violat": 15, "primari": 15, "abber": 15, "classif": 15, "seidel": 15, "1821": 15, "1896": 15, "coma": [14, 15], "astigmat": [14, 15], "field": [6, 15], "curvatur": [14, 15], "distort": 15, "2z_1": 15, "chromat": 15, "measur": 15, "correct": 15, "shape": [14, 15], "nowadai": 15, "adapt": [6, 15], "spatial": 15, "max": [14, 15], "larger": [14, 15], "solut": 15, "theta_c": [14, 15], "glass": [14, 15], "41": [14, 15], "8": [14, 15], "water": 15, "48": 15, "7": 15, "diamond": 15, "24": 15, "h": 15, "_2": 15, "o": 15, "33": 15, "loss": 15, "central": 15, "core": 15, "clad": 15, "lower": [14, 15], "low": 15, "multimod": 15, "gradient": 15, "mostli": 15, "silica": 15, "sio": 15, "44": 15, "46": 15, "001": 15, "02": 15, "overlin": 15, "phi": [14, 15], "theta": 15, "theta_a": 15, "sqrt": [14, 15], "na": 15, "qquad": 15, "ay_1": 15, "cy_1": 15, "arrai": [14, 15], "rr": 15, "transfer": 15, "bmatrix": 15, "convex": 15, "concav": 15, "whole": 15, "precalcul": 15, "matric": 15, "element": 15, "m_nm_": 15, "m_1": 15, "rememb": 15, "free": 15, "perfect": 15, "cloack": 15, "appar": 15, "immit": 15, "condit": 15, "afoc": 15, "except": 15, "nbsphinx": 15, "math": [14, 15], "f_2": 15, "f_1": 15, "f_1f_2": 15, "f_3": 15, "t_2": 15, "t_1": 15, "four": 15, "t_1t_2": 15, "t_4": 15, "f_4": 15, "t_3": 15, "2t_1": 15, "2f_2": 15, "vec": 15, "op": 15, "int_a": 15, "mathrm": 15, "taken": 15, "proporton": 15, "extremum": 15, "neighbor": 15, "minimum": 15, "maximum": 15, "inflect": 15, "usual": 15, "pmatrix": 15, "y_0": 15, "opl": 15, "split": 15, "l_1": 15, "l_2": 15, "beta": 15, "equiv": 15, "2r_2": 15, "2f": [14, 15], "must": 15, "converg": 15, "global": 15, "nabla": 15, "trajectori": 15, "variat": [14, 15], "calculu": 15, "dx": 15, "partial": 15, "dy": 15, "dz": 15, "hspace": 15, "9cm": 15, "parametr": 15, "const": 15, "straight": 15, "selfoc": 15, "n_0": 15, "2y": 15, "parabol": 15, "profil": 15, "theta_0": 15, "squar": 15, "potenti": 15, "magnifi": 15, "simplifi": 15, "behind": 15, "virtual": 15, "real": 15, "construct": 15, "2x": 15, "da": 15, "aa": 15, "cosh": 15, "sinh": 15, "x_": 15, "y_": 15, "check": [14, 15], "veloc": 15, "horizont": 15, "n_h": 15, "newton": 15, "dt": 15, "u": 15, "coulomb": 15, "q": 15, "epsilon_0": 15, "r_": 15, "rf": 15, "chi": 15, "photon": 15, "prf": 15, "zeta": 15, "hbar": 15, "lambda": 15, "_k": 15, "wavelength": 15, "character": 15, "c_0": 15, "2u": 15, "superposit": 15, "u_1": 15, "u_2": 15, "a_1u_1": 15, "a_2u_2": 15, "langl": 15, "rangl": 15, "averag": 15, "cycl": 15, "nm": 15, "omega": 15, "amplitud": 15, "frequenc": [14, 15], "nu": 15, "phase": 15, "helmholtz": 15, "arg": 15, "wavefront": [14, 15], "ikr": 15, "outward": 15, "inward": 15, "_0": 15, "origin": [14, 15], "fresnel": 15, "axi": [14, 15], "taylor": 15, "align": 15, "2z": 15, "ikz": 15, "ik": 15, "kz": 15, "4z": 15, "n_f": 15, "2_m": 15, "theta_m": 15, "wavevector": 15, "nk_0": 15, "stai": 15, "lambda_0": 15, "_1": 15, "k_": 15, "1x": 15, "k_1": 15, "k_2": 15, "1z": 15, "_3": 15, "n_1k_0": 15, "k_3": 15, "n_2k_0": 15, "3x": 15, "tangenti": 15, "conserv": 15, "repres": [14, 15], "ik_0": 15, "label": [14, 15], "magnitud": 15, "k_0": 15, "ref": 15, "2a": 15, "imaginari": 15, "part": 15, "zero": 15, "indenpend": 15, "vari": 15, "slowli": 15, "eikon": 15, "proport": 15, "transmitt": 15, "ikd": 15, "thick": 15, "air": [14, 15], "d_0": 15, "h_0": 15, "ik_0d_0": 15, "valid": 15, "big": 15, "2r": 15, "ink_0d_0": 15, "constant": 15, "transform": [14, 15], "paraboloid": 15, "center": [15, 16], "diffract": 15, "grate": 15, "transmit": 15, "sampl": 15, "mu": 15, "camera": 15, "_": 15, "cam": 15, "int": 15, "i2": 15, "prime": 15, "contrast": 15, "dpc": 15, "i_t": 15, "i_b": 15, "superpos": 15, "i_1": 15, "i_2": 15, "u_1u_2": 15, "phi_1": 15, "phi_2": 15, "i_1i_2": 15, "i_0": 15, "i_": 15, "min": [14, 15], "translat": 15, "2i_0": 15, "exist": 15, "monochromat": 15, "u_m": 15, "i_3": 15, "between": 15, "seri": [6, 15], "im": 15, "peak": 15, "bar": 15, "mi_0": 15, "hu_1": 15, "u_3": 15, "2u_1": 15, "4r": 15, "ge": 15, "tild": 15, "finess": 15, "mathcal": 15, "simeq": 15, "2nd": 15, "spectral": 15, "rang": [14, 15], "interfer": 15, "laser": 15, "caviti": 15, "fabri": 15, "perot": 15, "interferomet": 15, "digit": 15, "holographi": 15, "track": 15, "domain": 15, "nu_1": 15, "nu_2": 15, "odd": 15, "2l": 15, "nu_q": 15, "nu_0": 15, "nu_f": 15, "interval": 15, "sum": [14, 15], "phasor": 15, "again": 15, "nu_ft": 15, "t_f": 15, "puls": 15, "ghz": 15, "1000": [14, 15], "lock": 15, "tau": 15, "comb": 15, "far": 15, "u_0": 15, "envelop": 15, "nabla_t": 15, "i2k": 15, "helmholz": 15, "2_t": 15, "a_1": 15, "rho": [14, 15], "xi": 15, "iz_0": 15, "z_0": 15, "rayleigh": 15, "w": 15, "radiu": [14, 15, 16], "a_0": 15, "w_0": 15, "paramet": 15, "perp": 15, "gg": 15, "invers": 15, "int_0": 15, "within": 15, "certain": [14, 15], "rho_0": 15, "86": 15, "99": 15, "waist": 15, "spot": 15, "size": 15, "theta_0z": 15, "increas": 15, "linearli": 15, "larg": 15, "diverg": 15, "simlarli": 15, "slit": 15, "heisenberg": 15, "depth": 15, "focu": 15, "2z_0": 15, "additon": 15, "retard": 15, "guoi": 15, "v_p": 15, "arctan": 15, "2_0": 15, "mw_0": 15, "locat": [14, 15], "m_r": 15, "q_2": 15, "aq_1": 15, "cq_1": 15, "abcd": 15, "q_1": 15, "focus": 15, "2_2": 15, "w_2": 15, "focal": 15, "non": [6, 14, 15], "g": 15, "u_": 15, "h_m": 15, "h_n": 15, "hermit": 15, "polynomi": 15, "h_1": 15, "20": 15, "h_2": 15, "wavefunct": 15, "mirror": 15, "l_p": 15, "il": 15, "2p": 15, "laguerr": 15, "radial": [14, 15], "azimuth": [14, 15], "neg": [14, 15], "helic": 15, "topolog": 15, "charg": 15, "gauss": 15, "electr": 15, "magnet": 15, "vector": 15, "maxwel": 15, "varepsilon_0": 15, "mu_0": 15, "36": 15, "permitt": 15, "permeabl": 15, "varepsilon": 15, "alreadi": [14, 15], "_0e": 15, "transvers": 15, "energi": 15, "densiti": 15, "u_b": 15, "flow": [6, 15], "poynt": 15, "rangle_t": 15, "e_0": 15, "eta_0": 15, "mu_0c_0": 15, "377": 15, "imped": 15, "vacuum": 15, "radiat": 15, "pressur": 15, "electron": 15, "cloud": 15, "displac": 15, "against": 15, "nucleu": 15, "dipol": 15, "elementari": 15, "11": 15, "75": 15, "13": 15, "mm": 15, "atom": 15, "glanc": 15, "per": 15, "unit": [14, 15], "volum": 15, "hat": 15, "g_b": 15, "oint_": 15, "q_b": 15, "int_v": 15, "dv": 15, "rho_b": 15, "nq": 15, "flux": 15, "assum": [14, 15], "rest": 15, "orient": 15, "ionic": 15, "degener": 15, "propto": 15, "histori": 15, "p_i": 15, "sum_j": 15, "chi_": 15, "ij": 15, "e_j": 15, "d_i": 15, "varepsilon_": 15, "int_": 15, "a_2": 15, "a_3": 15, "e_": 15, "e_a": 15, "delai": 15, "nfrac": 15, "sim": 15, "plate": 15, "suscept": 15, "scalar": 15, "varepsilon_r": 15, "damp": 15, "harmon": 15, "oscil": 15, "ddot": 15, "sigma": 15, "omega_0": 15, "x_0": 15, "respons": 15, "eta": 15, "q_e": 15, "nq_e": 15, "polariz": 15, "chi_0": 15, "treatment": 15, "ne": 15, "f_j": 15, "omega_j": 15, "sigma_j": 15, "strength": 15, "f_": 15, "12": [14, 15], "m_l": 15, "hbar\u00b2": 15, "e_2": 15, "e_1": 15, "lorentz": 15, "kappa": 15, "2i": 15, "2k_0": 15, "coeffici": 15, "weakli": 15, "absorb": 15, "dn": 15, "intim": 15, "stem": 15, "polarizazit": 15, "a_x": 15, "_x": 15, "a_i": 15, "_y": 15, "phi_x": 15, "phi_i": 15, "e_x": 15, "e_i": 15, "e_xe_i": 15, "a_xa_i": 15, "half": 15, "2a_xa_i": 15, "circ": 15, "ellipt": 15, "neq": 15, "formal": 15, "j_1": 15, "j_2": 15, "a_": 15, "1y": 15, "determin": 15, "under": [14, 15], "rai": 6, "facet": 6, "research": 6, "involv": [6, 14], "propgat": 6, "fundament": 6, "matter": 6, "disord": 6, "quanta": 6, "superresolut": 6, "fastest": 6, "grow": 6, "fourier": 6, "anisotrop": 6, "lai": 6, "patch": 16, "defin": [14, 16], "arc": 16, "degre": [14, 16], "add_patch": 16, "aspect": 16, "set_aspect": 16, "set_xlim": 16, "set_ylim": 16, "draw": 14, "further": 14, "hit": 14, "nonlinear": 14, "angular": 14, "obtain": 14, "expand": 14, "bracket": 14, "lead": 14, "note": 14, "seen": 14, "latter": 14, "actual": 14, "level": 14, "deriv": 14, "orthonorm": 14, "wide": 14, "did": 14, "disk": 14, "particularli": 14, "becaus": 14, "orthogon": 14, "inner": 14, "product": 14, "circl": 14, "decompos": 14, "polar": 14, "coordin": 14, "z_n": 14, "r_n": 14, "geq": 14, "leq": 14, "2k": 14, "method": 14, "being": 14, "noll": 14, "pair": 14, "order": 14, "ophthalmologi": 14, "human": 14, "ey": 14, "decomposit": 14, "simpler": 14, "defocu": 14, "etc": 14, "radial_polynomi": 14, "zeros_lik": 14, "ab": 14, "factori": 14, "zernike_polynomi": 14, "linspac": 14, "400": 14, "xx": 14, "yy": 14, "meshgrid": 14, "arctan2": 14, "mask": 14, "nan": 14, "flatten": 14, "imshow": 14, "extent": 14, "off": 14, "tight_layout": 14, "spherical_surfac": 16, "outgo": 14, "characterist": 14, "onto": 14, "revers": 14, "anymor": 14, "out": 14, "phenomenon": 14, "fantast": 14, "54": 14, "snell_law": 14, "theta1_degre": 14, "theta1_radian": 14, "sin_theta2": 14, "theta2_radian": 14, "n1_glass": 14, "n2_air": 14, "theta2_glass_to_air": 14, "dpi": 14, "150": 14, "linestyl": 14, "critic": 14, "\u03b8c": 14, "xlabel": 14, "\u03b8_1": 14, "ylabel": 14, "\u03b8_2": 14, "xlim": 14, "ylim": 14, "grid": 14, "61": 14, "62": [], "html_code": 14, "id": 14, "mycanva": [], "style": 14, "1px": [], "solid": [], "000000": [], "support": [], "html5": [], "tag": [], "script": 14, "var": 14, "getelementbyid": [], "ctx": [], "getcontext": [], "rectangl": [], "fillstyl": [], "0000ff": [], "fillrect": [], "63": [], "mybutton": [], "me": [], "handlebuttonclick": [], "alert": [], "addeventlisten": [], "64": [], "createel": [], "cdnj": [], "cloudflar": [], "ajax": [], "lib": [], "d3": 14, "appendchild": [], "consol": [], "log": [], "window": [], "65": [], "svg_script": [], "append": 14, "attr": 14, "300": [], "stroke": [], "grai": [], "cyan": [], "130": [], "cx": 14, "cy": 14, "transit": [], "durat": [], "10000": [], "69": [], "load_d3_in_cell_output": 14, "d3j": 14, "v6": 14, "get_ipython": 14, "event": 14, "regist": 14, "pre_run_cel": 14, "70": [], "div": 14, "ensur": [], "50": 14, "89": [], "92": [], "290": [], "eas": [], "easelinear": [], "102": 14, "103": 14, "floatslid": 14, "update_circle_radiu": 14, "slider": 14, "continuous_upd": 14, "callback": 14, "initi": 14}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"welcom": 6, "experiment": [], "physik": [], "3": 15, "cours": 4, "inform": [], "jupyt": 12, "notebook": [11, 12, 13], "lectur": [6, 9], "1": [6, 8, 15], "indic": 6, "tabl": 6, "assign": 0, "exam": 1, "instructor": 2, "resourc": 3, "molecular": 3, "nanophoton": 3, "group": 3, "python": 3, "document": [3, 12], "tutori": 3, "schedul": 4, "thi": 5, "websit": 5, "introduct": [6, 12], "photon": 6, "overview": 7, "exercis": 8, "content": 9, "enter": 10, "code": [10, 13], "markdown": 10, "basic": 10, "head": 10, "embed": 10, "latex": 10, "equat": 10, "imag": 10, "video": 10, "an": 11, "empti": 11, "what": [12, 15], "i": 12, "editor": [12, 13], "kernel": [12, 13], "edit": 13, "mode": 13, "command": 13, "keyboard": 13, "navig": 13, "run": 13, "manag": 13, "gener": [14, 15], "optic": [14, 15], "rai": [14, 15], "law": [14, 15], "reflect": [14, 15], "refract": [14, 15], "spheric": [14, 15], "boundari": [14, 15], "geometr": 15, "total": [14, 15], "intern": [14, 15], "guid": 15, "light": 15, "fiber": 15, "step": 15, "index": 15, "meridion": 15, "skew": 15, "numer": 15, "apertur": 15, "matrix": 15, "For": 15, "exampl": 15, "cloak": 15, "fermat": 15, "": 15, "principl": 15, "thin": 15, "len": [14, 15], "formul": 15, "differenti": 15, "form": 15, "compon": 15, "grin": 15, "you": 15, "should": 15, "know": 15, "mirag": 15, "effect": 15, "over": 15, "hot": 15, "street": 15, "bf": 15, "f": 15, "m": 15, "cdot": 15, "correspond": 15, "quantiti": 15, "momentum": 15, "tweezer": 15, "wave": 15, "gaussian": 15, "beam": 15, "propierti": 15, "transmiss": 15, "through": 15, "higher": 15, "order": 15, "cylindr": 15, "coordin": 15, "electromagnet": 15, "dielectr": 15, "media": 15, "linear": 15, "nondispers": 15, "homogen": 15, "isotrop": 15, "inhomogen": 15, "anisotrop": 15, "dispers": 15, "nonlinear": 15, "microscop": 15, "model": 15, "p": 15, "reson": 15, "medium": 15, "absorpt": 15, "kramer": 15, "kronig": 15, "4": 15, "polar": 15, "conjug": 14, "plane": 14, "biconvex": 14, "aberr": 14, "character": 14, "zernik": 14, "polynomi": 14}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"Assignments": [[0, "assignments"]], "Exams": [[1, "exams"]], "Instructor": [[2, "instructor"]], "Resources": [[3, "resources"]], "Molecular Nanophotonics Group": [[3, "molecular-nanophotonics-group"]], "Python Documentation": [[3, "python-documentation"]], "Python Tutorials": [[3, "python-tutorials"]], "Course Schedule": [[4, "course-schedule"]], "This Website": [[5, "this-website"]], "Overview": [[7, "overview"]], "Exercise 1": [[8, "exercise-1"]], "Lecture Contents": [[9, "lecture-contents"]], "Entering code": [[10, "Entering-code"]], "Entering Markdown": [[10, "Entering-Markdown"]], "Markdown basics": [[10, "Markdown-basics"]], "Headings": [[10, "Headings"]], "Embedded code": [[10, "Embedded-code"]], "LaTeX equations": [[10, "LaTeX-equations"]], "Images": [[10, "Images"]], "Videos": [[10, "Videos"]], "An empty notebook": [[11, "An-empty-notebook"]], "Introduction to Jupyter": [[12, "Introduction-to-Jupyter"]], "What is Jupyter Notebook?": [[12, "What-is-Jupyter-Notebook?"]], "Notebook editor": [[12, "Notebook-editor"], [13, "Notebook-editor"]], "Kernels": [[12, "Kernels"]], "Notebook documents": [[12, "Notebook-documents"]], "Edit mode": [[13, "Edit-mode"]], "Command mode": [[13, "Command-mode"]], "Keyboard navigation": [[13, "Keyboard-navigation"]], "Running code": [[13, "Running-code"]], "Managing the kernel": [[13, "Managing-the-kernel"]], "Welcome to the Introduction to Photonics 1!": [[6, "welcome-to-the-introduction-to-photonics-1"]], "Lecture 1:": [[6, null]], "Indices and tables": [[6, "indices-and-tables"]], "General Optics": [[14, "General-Optics"]], "Ray Optics": [[14, "Ray-Optics"]], "Law of reflection": [[14, "Law-of-reflection"], [15, "Law-of-reflection"]], "Law of refraction": [[14, "Law-of-refraction"], [15, "Law-of-refraction"]], "Refraction on spherical boundary": [[14, "Refraction-on-spherical-boundary"], [15, "Refraction-on-spherical-boundary"]], "Conjugated Planes": [[14, "Conjugated-Planes"]], "Biconvex Lens": [[14, "Biconvex-Lens"]], "Aberration Characterization and Zernike Polynomials": [[14, "Aberration-Characterization-and-Zernike-Polynomials"]], "Total Internal Reflection": [[14, "Total-Internal-Reflection"]], "1. General Optics": [[15, "1.-General-Optics"]], "Geometrical Optics": [[15, "Geometrical-Optics"]], "Total internal reflection": [[15, "Total-internal-reflection"]], "Guiding light fibers": [[15, "Guiding-light-fibers"]], "Step-index fiber": [[15, "Step-index-fiber"]], "Meridional ray": [[15, "Meridional-ray"]], "Skewed ray": [[15, "Skewed-ray"]], "Numerical aperture": [[15, "Numerical-aperture"]], "Matrix Optics": [[15, "Matrix-Optics"], [15, "id5"]], "For example: Optical cloaking": [[15, "For-example:-Optical-cloaking"]], "Fermat\u2019s Principle": [[15, "Fermat's-Principle"]], "Refraction": [[15, "Refraction"]], "Thin lens": [[15, "Thin-lens"]], "Formulation of Fermat\u2019s principle": [[15, "Formulation-of-Fermat's-principle"]], "Differential form in components": [[15, "Differential-form-in-components"]], "GRIN lens": [[15, "GRIN-lens"]], "What you should know:": [[15, "What-you-should-know:"]], "Mirage effect over a hot street": [[15, "Mirage-effect-over-a-hot-street"]], "{\\bf F = m \\cdot a} optics": [[15, "{\\bf-F-=-m-\\cdot-a}-optics"]], "Corresponding quantities": [[15, "Corresponding-quantities"]], "Ray optics and momentum": [[15, "Ray-optics-and-momentum"]], "Optical Tweezers": [[15, "Optical-Tweezers"]], "Wave Optics": [[15, "Wave-Optics"]], "Gaussian beam": [[15, "Gaussian-beam"]], "Propierties": [[15, "Propierties"]], "Transmission through a lens": [[15, "Transmission-through-a-lens"]], "Higher order Gaussian beams": [[15, "Higher-order-Gaussian-beams"]], "Cylindrical coordinates": [[15, "Cylindrical-coordinates"]], "1.3 Electromagnetic Optics": [[15, "1.3-Electromagnetic-Optics"]], "Dielectric media": [[15, "Dielectric-media"]], "linear media": [[15, "linear-media"]], "nondispersive media": [[15, "nondispersive-media"]], "homogeneous media": [[15, "homogeneous-media"]], "isotropic media": [[15, "isotropic-media"]], "inhomogeneous media": [[15, "inhomogeneous-media"]], "anisotropic media": [[15, "anisotropic-media"]], "dispersive media": [[15, "dispersive-media"]], "nonlinear media": [[15, "nonlinear-media"]], "Linear, nondispersive, homogeneous, isotropic media": [[15, "Linear,-nondispersive,-homogeneous,-isotropic-media"]], "microscopic model of P": [[15, "microscopic-model-of-P"]], "resonant medium": [[15, "resonant-medium"]], "dispersion": [[15, "dispersion"]], "absorption and dispersion": [[15, "absorption-and-dispersion"]], "Kramers\u2013Kronig": [[15, "Kramers\u2013Kronig"]], "1.4 Polarization Optics": [[15, "1.4-Polarization-Optics"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/source/notebooks/L1/.ipynb_checkpoints/1_ray_optics-checkpoint.ipynb b/source/notebooks/L1/.ipynb_checkpoints/1_ray_optics-checkpoint.ipynb index ec85e02..c2e94fa 100644 --- a/source/notebooks/L1/.ipynb_checkpoints/1_ray_optics-checkpoint.ipynb +++ b/source/notebooks/L1/.ipynb_checkpoints/1_ray_optics-checkpoint.ipynb @@ -130,12 +130,48 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 102, "id": "fbf42d2d-ba72-4d79-b251-bf343a9c054c", "metadata": { "tags": [] }, "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -184,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 103, "id": "a7043a8d-8a5a-4b0a-9ec3-3c61e77665b1", "metadata": { "tags": [] @@ -241,33 +277,70 @@ { "data": { "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "81c9708e657a43299356d6d746905d25", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=50.0, continuous_update=False, description='Radius:', min=10.0, step=1…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", "
\n", + "\n", "\n" ], "text/plain": [ @@ -279,35 +352,51 @@ } ], "source": [ - "%%html\n", + "from ipywidgets import interact, FloatSlider\n", + "from IPython.display import display, HTML, Javascript\n", + "\n", + "# Define the function to update the circle radius\n", + "def update_circle_radius(radius):\n", + " display(Javascript(f\"\"\"\n", + " (function() {{\n", + " var circle = d3.select(\"#d3-circle\");\n", + " if(circle) circle.attr(\"r\", {radius});\n", + " }})();\n", + " \"\"\"))\n", + "\n", + "# Create the slider widget\n", + "slider = FloatSlider(\n", + " value=50,\n", + " min=10,\n", + " max=100,\n", + " step=1,\n", + " description='Radius:',\n", + " continuous_update=False\n", + ")\n", + "\n", + "# Display the slider and pass the update function as the callback\n", + "interact(update_circle_radius, radius=slider)\n", + "\n", + "# Define the HTML and JavaScript code for the initial D3.js circle\n", + "html_code = \"\"\"\n", "
\n", + "\n", "" + "\n", + "\"\"\"\n", + "\n", + "# Display the initial D3.js circle\n", + "display(HTML(html_code))" ] }, { diff --git a/source/notebooks/L1/1_ray_optics.ipynb b/source/notebooks/L1/1_ray_optics.ipynb index ec85e02..c2e94fa 100644 --- a/source/notebooks/L1/1_ray_optics.ipynb +++ b/source/notebooks/L1/1_ray_optics.ipynb @@ -130,12 +130,48 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 102, "id": "fbf42d2d-ba72-4d79-b251-bf343a9c054c", "metadata": { "tags": [] }, "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -184,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 103, "id": "a7043a8d-8a5a-4b0a-9ec3-3c61e77665b1", "metadata": { "tags": [] @@ -241,33 +277,70 @@ { "data": { "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "81c9708e657a43299356d6d746905d25", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=50.0, continuous_update=False, description='Radius:', min=10.0, step=1…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", "
\n", + "\n", "\n" ], "text/plain": [ @@ -279,35 +352,51 @@ } ], "source": [ - "%%html\n", + "from ipywidgets import interact, FloatSlider\n", + "from IPython.display import display, HTML, Javascript\n", + "\n", + "# Define the function to update the circle radius\n", + "def update_circle_radius(radius):\n", + " display(Javascript(f\"\"\"\n", + " (function() {{\n", + " var circle = d3.select(\"#d3-circle\");\n", + " if(circle) circle.attr(\"r\", {radius});\n", + " }})();\n", + " \"\"\"))\n", + "\n", + "# Create the slider widget\n", + "slider = FloatSlider(\n", + " value=50,\n", + " min=10,\n", + " max=100,\n", + " step=1,\n", + " description='Radius:',\n", + " continuous_update=False\n", + ")\n", + "\n", + "# Display the slider and pass the update function as the callback\n", + "interact(update_circle_radius, radius=slider)\n", + "\n", + "# Define the HTML and JavaScript code for the initial D3.js circle\n", + "html_code = \"\"\"\n", "
\n", + "\n", "" + "\n", + "\"\"\"\n", + "\n", + "# Display the initial D3.js circle\n", + "display(HTML(html_code))" ] }, {