3. 几何光学与矩阵光学:近轴光线追迹、传输矩阵

各位同学,今天我们来聊聊光学系统仿真里最基础、也最实用的工具——几何光学与矩阵光学。说实话,我刚入行那会儿,觉得光线追迹就是画几条线,没什么技术含量。直到有一次,我设计一个激光扩束系统,用传统方法算了三天,结果装调出来光斑质量一塌糊涂。后来我才明白,矩阵光学才是真正让复杂系统变得清晰可控的利器。

3.1 近轴光线追迹:为什么我们只关心小角度?

先说说近轴近似。你想想看,实际的光线在透镜里走的是曲线,但如果我们只关心靠近光轴的那些光线,事情就简单多了。近轴近似说白了就是:sinθ ≈ θ,tanθ ≈ θ。这个近似在角度小于5°时误差很小,但计算量却大幅下降。

核心思想:近轴光线追迹假设所有光线与光轴的夹角都很小,这样我们就可以用线性关系来描述光线的传播和折射。

我个人习惯用两个参数来描述一条光线:y(光线离光轴的高度)和α(光线与光轴的夹角)。这两个参数在光学系统中传播时,会经历两种基本操作:平移和折射。

3.2 传输矩阵:把光学系统变成数学公式

矩阵光学的精髓,就是把光线追迹变成矩阵乘法。你输入一个向量 [y, α]ᵀ,经过一个光学元件,输出一个新的向量 [y', α']ᵀ。这个变换关系用一个2×2矩阵表示,就是传输矩阵。

我刚开始学的时候觉得这玩意儿很抽象,后来在做一个激光谐振腔设计时,发现用矩阵算稳定性简直不要太爽。你想想看,一个复杂的多透镜系统,用矩阵连乘几下就搞定了。

3.2.1 平移矩阵

光线在均匀介质中传播距离 d,高度会变化,但角度不变。平移矩阵长这样:

M_translation = [1  d]
                [0  1]

什么意思呢?光线从位置1到位置2,高度 y₂ = y₁ + d·α₁,角度 α₂ = α₁。就这么简单。

我的经验:平移矩阵中的 d 是光线实际传播的轴向距离,不是空间直线距离。在近轴近似下,这两者差别很小,但严谨计算时要注意。

3.2.2 折射矩阵

光线经过两种介质的界面时,会发生折射。折射矩阵是:

M_refraction = [1      0]
               [-(n₂-n₁)/R  n₁/n₂]

其中 n₁、n₂ 是折射率,R 是界面曲率半径。注意符号规则:凸面朝入射光方向时 R 为正。

我曾经在做一个非球面透镜设计时,忽略了折射矩阵中的曲率符号,结果仿真结果和实测差了十万八千里。嗯,从那以后我每次写矩阵都要检查一遍符号。

3.2.3 反射矩阵

反射可以看作是折射的一种特殊情况,相当于 n₂ = -n₁。反射矩阵为:

M_reflection = [1      0]
               [-2/R   1]

这个矩阵在激光谐振腔设计中特别常用。我记得有一次帮客户优化一个V型腔,就是用反射矩阵快速算出了稳定条件。

3.3 透镜与反射镜的矩阵表示

实际的光学元件,比如透镜和反射镜,都可以用传输矩阵来表示。

3.3.1 薄透镜矩阵

薄透镜的矩阵是最常用的:

M_lens = [1     0]
         [-1/f  1]

其中 f 是透镜的焦距。这个矩阵告诉我们:光线经过薄透镜时,高度不变,但角度会改变。改变量正比于光线高度,比例系数是 -1/f。

注意:这个矩阵只适用于薄透镜近似。如果透镜很厚,需要拆成「平移-折射-平移」三个矩阵相乘。我见过不少新手直接用薄透镜矩阵算厚透镜,结果误差大到离谱。

3.3.2 球面反射镜矩阵

球面反射镜的矩阵和薄透镜很像:

M_mirror = [1     0]
           [-2/R  1]

注意这里 R 是曲率半径,对于凹面镜 R 为正,凸面镜 R 为负。焦距 f = R/2,所以也可以写成:

M_mirror = [1     0]
           [-1/f  1]

是不是和透镜矩阵一模一样?没错,从矩阵角度看,薄透镜和球面反射镜对光线的作用是等价的。这个性质在系统设计中经常被利用。

3.4 知识体系总览

下面这张图是我自己整理的矩阵光学知识结构,你可以把它当作学习路线图:

矩阵光学知识体系 光线参数 [y, α]ᵀ 平移操作 折射操作 反射操作 平移矩阵 [1 d; 0 1] 折射矩阵 [1 0; -Δn/R n₁/n₂] 反射矩阵 [1 0; -2/R 1] 均匀介质 透镜 / 界面 反射镜 系统矩阵 = Mₙ · ... · M₂ · M₁

3.5 系统矩阵:把元件串起来

一个光学系统由多个元件组成,系统矩阵就是各个元件矩阵的乘积。注意顺序:光线先经过的元件矩阵在右边

比如一个简单的系统:平移 d₁ → 透镜 f → 平移 d₂,系统矩阵就是:

M_system = M_trans(d₂) · M_lens(f) · M_trans(d₁)

这个顺序我刚开始总是搞反,后来想了个办法:矩阵乘法是从右往左读的,就像光线从左边进来一样。你试试看,是不是好记多了?

实用技巧:系统矩阵的行列式值恒为1(对于无损耗系统)。这个性质可以用来检查你的矩阵计算是否正确。我每次算完系统矩阵,第一件事就是算行列式,如果不是1,肯定哪里算错了。

3.6 一个简单的例子

假设有一个焦距 f = 100mm 的薄透镜,光线从透镜前方 50mm 处以高度 y₁ = 10mm、角度 α₁ = 0.01 rad 入射。求光线经过透镜后 200mm 处的高度和角度。

系统矩阵:

M = [1 200] · [1    0] · [1 50]
    [0   1]   [-1/100 1]   [0  1]

先算透镜和平移的乘积,再乘以后面的平移。最终得到输出光线参数:

y₂ = 10 + 0.01×50 = 10.5 mm  (到透镜时)
α₂ = -10.5/100 + 0.01 = -0.095 rad  (经过透镜后)
y₃ = 10.5 + (-0.095)×200 = -8.5 mm  (最终位置)

你看,光线在透镜后200mm处已经跑到光轴下方了。这个结果用矩阵算起来非常快,而且不容易出错。

我的建议:刚开始学矩阵光学时,拿几个简单系统手算一遍,再用软件验证。我当年就是这么干的,算过三五个系统后,矩阵乘法就变成肌肉记忆了。

好了,这一章的内容就到这里。矩阵光学是光学系统仿真的基石,后面的章节我们会用它来分析更复杂的系统,比如谐振腔稳定性、高斯光束传输等等。记住,矩阵就是光学的「语言」,掌握了它,你就能和任何光学系统对话。