光的世界︰矩陣光學六乙

人類是使用符號的動物,故而能以語言、文字表述宇宙人生之萬象 。然而這並非不學而能的事,實是成長學習過程中,日積月累之功 。因此運用『矩陣光學』符號,展現『幾何光學』事理,不如想像之簡單容易,一般還得努力練習的哩?好處是熟悉之後對於『幾何光學』之理解也自然深化的了!

茲舉何謂『焦距』乙事,談談『平行光成像』之理︰

522px-Lens1.svg

 

Lens_and_wavefronts  Large_convex_lens

 

若問什麼是『平行光』?它與什麼『平行』的呢??一束『平行』之光線,可用 (h, \theta) ,這裡 h 表示距離『光軸』的高度,視為此束『平行光』之參數變元;那個 \theta 是此光束與『光軸』形成的夾角,因此為此束『平行光』之常數常元。因是『平行光』說其自身光線彼此平行而已。

【參考資料】

class sympy.physics.optics.gaussopt.GeometricRay

Representation for a geometric ray in the Ray Transfer Matrix formalism.

Parameters :

h : height, and

angle : angle, or

matrix : a 2×1 matrix (Matrix(2, 1, [height, angle]))

Examples

>>> from sympy.physics.optics import GeometricRay, FreeSpace
>>> from sympy import symbols, Matrix
>>> d, h, angle = symbols('d, h, angle')

>>> GeometricRay(h, angle)
Matrix([
[    h],
[angle]])

>>> FreeSpace(d)*GeometricRay(h, angle)
Matrix([
[angle*d + h],
[      angle]])

>>> GeometricRay( Matrix( ((h,), (angle,)) ) )
Matrix([
[    h],
[angle]])

angle

The angle with the optical axis.

Examples

>>> from sympy.physics.optics import GeometricRay
>>> from sympy import symbols
>>> h, angle = symbols('h, angle')
>>> gRay = GeometricRay(h, angle)
>>> gRay.angle
angle

height

The distance from the optical axis.

Examples

>>> from sympy.physics.optics import GeometricRay
>>> from sympy import symbols
>>> h, angle = symbols('h, angle')
>>> gRay = GeometricRay(h, angle)
>>> gRay.height
h

 

如此就一個『焦距』為 f 的『薄透鏡』

  \left( \begin{array}{cc} 1 &  0  \\ - \frac{1}{f} & 1 \end{array} \right)

,意味著與『光軸平行』之『平行光』 \theta = 0 行經此『薄透鏡』後 ,將在離『薄透鏡』 f 處『聚焦』,此點稱之為『焦點』 。看來清楚明白之事,數理解析上要如何陳述此理耶?設想此束『平行光』剛過『薄透鏡』即將折屈,一段距離 z 後,整束光會交匯於一點,也就是說此點存在且和 h 無關也!且用 Sympy 工具幫忙運算一番︰

pi@raspberrypi:~ ipython3 Python 3.4.2 (default, Oct 19 2014, 13:31:11)  Type "copyright", "credits" or "license" for more information.  IPython 2.3.0 -- An enhanced Interactive Python. ?         -> Introduction and overview of IPython's features. %quickref -> Quick reference. help      -> Python's own help system. object?   -> Details about 'object', use 'object??' for extra details.  In [1]: from sympy import *  In [2]: from sympy.physics.optics import FreeSpace, FlatRefraction, ThinLens, GeometricRay, CurvedRefraction  In [3]: init_printing()  In [4]: f, z = symbols('f, z')  In [5]: 薄透鏡 = ThinLens(f)  In [6]: 行經距離Z = FreeSpace(z)  In [7]: Z處匯聚現象 = 行經距離Z * 薄透鏡  In [8]: Z處匯聚現象 Out[8]:  ⎡    z   ⎤ ⎢1 - ─  z⎥ ⎢    f   ⎥ ⎢        ⎥ ⎢ -1     ⎥ ⎢ ───   1⎥ ⎣  f     ⎦  In [9]: h, θ = symbols('h, θ')  In [10]: 平行光 = GeometricRay(h, θ)  In [11]: 平行光 Out[11]:  ⎡h⎤ ⎢ ⎥ ⎣θ⎦  In [12]: Z處光束 = Z處匯聚現象 * 平行光  In [13]: Z處光束 Out[13]:  ⎡  ⎛    z⎞      ⎤ ⎢h⋅⎜1 - ─⎟ + z⋅θ⎥ ⎢  ⎝    f⎠      ⎥ ⎢               ⎥ ⎢         h     ⎥ ⎢     θ - ─     ⎥ ⎣         f     ⎦  In [14]:  </pre>    <span style="color: #003300;">得到一式</span>h \cdot \left( 1 - \frac{z}{f} \right) + z \cdot \theta <span style="color: #003300;">。此式當z = f 時與h無關,這決定了『焦平面』。再針對『軸向平行光』\theta = 0,此式為0,述說必然交會乎!反思在『焦平面』</span> <pre class="lang:python decode:true ">In [15]: Z處匯聚現象.subs(z,f) Out[15]:  ⎡ 0   f⎤ ⎢      ⎥ ⎢-1    ⎥ ⎢───  1⎥ ⎣ f    ⎦  In [16]:  </pre>    <span style="color: #003300;">上觀象,到底見到的是什麼呢??!!</span>  從上篇『造透鏡者公式』可知『薄透鏡』逆向『焦距』也是一樣的f,那麼通過『前焦點』之任意光線(0, \theta)$,將會如何的阿?讀者自可解讀的吧︰
In [16]: 前焦點現象 = (薄透鏡 * 行經距離Z).subs(z, f)

In [17]: 前焦點現象
Out[17]: 
⎡ 1   f⎤
⎢      ⎥
⎢-1    ⎥
⎢───  0⎥
⎣ f    ⎦

In [18]: 方將通過前焦點之任意光線 = GeometricRay(0, θ)

In [19]: 方將通過前焦點之任意光線
Out[19]: 
⎡0⎤
⎢ ⎥
⎣θ⎦

In [20]: 前焦點現象 * 方將通過前焦點之任意光線
Out[20]: 
⎡f⋅θ⎤
⎢   ⎥
⎣ 0 ⎦

In [21]: