# Python自准直仪双筒望远镜光学ABCD矩阵行为算法

{% embed url="https://viadean.notion.site/Python-ABCD-1d36f7c16a6946c99b5b8d09a412853f" %}

{% content-ref url="../zhi-dian-mi-jin-brief" %}
[zhi-dian-mi-jin-brief](../zhi-dian-mi-jin-brief)
{% endcontent-ref %}

### 🎯要点

🎯平面曲；面圆柱面；非球面光，双凸透镜；90 度棱镜；分束立方体，双透镜棱；镜分光镜光线’；横置隔膜；全内反射；多个分束器的系统，自准直仪；双筒望远镜光学 | 🎯使用ABCD矩阵计算物体：图像；光圈光阑；视场光阑光路 | 🎯光学算法：快速傅立叶变换；雷利·索末菲；Chirp z 变换；平面波分解；光束传播法；波传播法；矢量瑞利-索末菲；矢量快速傅立叶变换；矢量 Chirp z 变换 🖊光场：平面波；球面波；高斯光束；贝塞尔光束；涡旋光束；拉盖尔光束；厄米高斯光束；泽尼克光束。

{% embed url="https://viadean.notion.site/fb85b965c1f7405abe43767bb929f2fc" %}

### 🍪语言内容分比

{% @mermaid/diagram content="pie title 语言分比
"Python":90
"C":40
"C++":20" %}

{% @mermaid/diagram content="pie title 内容分比
"光学":90
"数学":40
"算法":50
"多种曲面光":40
"多种光场":40
"光线矩阵":40" %}

### 🍇Python高斯光束

激光器通常产生所谓的高斯光束，其中光束电场分布的横向轮廓可以用高斯函数来描述：

$$
E(r, z) \propto \exp \left(-\frac{r^2}{w(z)^2}\right) \exp [i \varphi(z, r)]
$$

这里，$$r$$是距光束轴的距离，$$z$$是沿传播方向的坐标，$$w(z)$$是所谓的高斯光束半径，$$\varphi\left(z_r r\right )$$是描述沿光束的相位演化以及波前曲率的术语：

$$
\varphi(z, r)=k z-\arctan \frac{z}{z_{ R }}+\frac{k r^2}{2 R(z)}
$$

这里，$$k=2 \pi / \lambda$$ 是波数，$$R(z)$$ 是波前曲率，并且

$$
z_{ R }=\frac{\pi w_0^2}{\lambda}
$$

是根据光束焦点处的光束半径 $$w_0$$ 计算的瑞利长度（或瑞利范围）。光束半径根据以下公式演变

$$
w(z)=w_0 \sqrt{1+\left(\frac{z}{z_{ R }}\right)^2}
$$

曲率半径为

$$
R(z)=z\left[1+\left(\frac{z_{ R }}{z}\right)^2\right]
$$

该图显示了焦点周围光束半径的演变以及波前曲率，在靠近和远离光束焦点时波前曲率较弱。光束强度为

$$
I(r, z)=\frac{P}{\pi w(z)^2 / 2} \exp \left[-2 \frac{r^2}{w(z)^2}\right]
$$

对于 $$r=w$$，它在轴上达到其值的 $$\approx 13.5 \%$$。对于 $$z \gg z_R$$，光束半径以接近线性的方式演变，发散角定义为

$$
\theta=\frac{\partial w}{\partial z}=\frac{\lambda}{\pi w_0}
$$

该方程表明，光束参数积（定义为光束腰半径 w\_0 与发散角的乘积）为 \lambda / n，因此与 w\_0 无关。事实上，高斯光束具有尽可能小的（衍射受限）光束参数积，这可以解释为尽可能高的光束质量。

在均匀介质中传播期间，高斯光束保持高斯状态，仅其参数（光束半径、波前曲率半径等）发生变化。这同样适用于通过薄透镜的传播或弱曲面镜的反射。这些特性使高斯光束在光学领域（包括光学谐振器的物理领域）发挥着重要作用。即使对于明显非高斯光束，高斯光束传播的推广（涉及所谓的 M^2 因子）也可以广泛使用。然而，对于非常强烈发散的光束（因此也对于非常紧密聚焦的光束），高斯光束传播会失败，因为分析是基于所谓的近轴近似，这违反了这一点。

#### Python模拟高斯光束

```python
 import sympy as sym               
 import numpy as np              
 import matplotlib.pyplot as plt   
```

高斯光束可以通过其（径向）腰部 $$w_0$$、瑞利范围 z\_R=\frac{\pi \* w\_0^2}{\lambda} 及其腰部位置 $$z_0$$ 来定义。

```
 w0 = 1E-3 
 lam = 355E-9 
 zR = bs.Zr(w0, lam)
 z0 = 0 
```

```python
 d = sym.symbols('d')
 M = bs.prop(d)
```

```python
 R, w = bs.q1_inv_func(0, w0, lam, M)
```

绘图腰部图形

```
 bs.plot(w, d, rang = np.arange(0,10))
```

当光束穿过透镜时会发生什么？我们使用函数将多个 ABCD 矩阵相乘。

```python
 w0 = 1E-3 
 lam = 355E-9 
 zR = bs.Zr(w0, lam) 
 z0 = 0 
 ​
 d = sym.symbols('d')
 M = bs.mult(bs.prop(d), bs.lens(.5), bs.prop(1))
             
 R, w = bs.q1_inv_func(0, w0, lam, M)
 ​
 bs.plot(w, d, rang = np.arange(0,1,.01))
```

使用两个透镜系统扩展和准直光束

```python
 w0 = 1E-3 
 lam = 355E-9 
 zR = bs.Zr(w0, lam) 
 z0 = 0 
 ​
 d1, d2, d3, f1, f2 = sym.symbols('d1 d2 d3 f1 f2')
 ​
 M = bs.mult(bs.prop(d3),bs.lens(f2),bs.prop(d2), bs.lens(f1), bs.prop(d1))
 ​
 R, w = bs.q1_inv_func(0, w0, lam, M)
```

准直光束

```python
 R_coll = R.subs(d1,1).subs(d2,1).subs(f1,.17).subs(d3,0)
 f2_coll = sym.solve(1/R_coll,f2)[0]
 print('f2 = {:.2f}, for a collimated beam, 5x the original waist, after propagating 1m to the first lens of f1 = .17m, and propagating another 1m to the second lens'.format(f2_coll))
```

绘制第二个透镜之后的光束轮廓，并查看其是否准直。

```python
 M = bs.mult(bs.prop(d3),bs.lens(.83),bs.prop(1), bs.lens(.17), bs.prop(1))
 ​
 R, w = bs.q1_inv_func(0, w0, lam, M)
 ​
 bs.plot(w,d3)
```
