sympy光束变换
物象关系
最简单的几何光学是在初中学的,主要对象是物点、像点、透镜焦距,这三个物理量任取两个求第三个,总共也只有三对关系,而且光路可逆,所以物点和像点其实是一回事儿:
geometric_conj_af(a, f)
geometric_conj_bf(a, f)
geometric_conj_ab(a, b)
束腰变换
但从高斯光束的角度理解,简单的物像关系只能得到束腰在经过透镜变换后的位置变化,而不能描述束腰尺寸的变化。现有一个束腰为winw_{in}win的光斑,若想通过一个焦距为fff的透镜,使其束腰变为woutw_{out}wout,那么入射光、出射光以及透镜应该如何摆放?下面这个函数就能解决这个问题
conjugate_gauss_beams(wavelen, waist_in, waist_out, f)
其中,wavelen
为波长;waist_in, waist_out
为入射光和出射光的束腰;f
为透镜焦距。
其返回值有三项,分别是入射光束腰和透镜的距离、出射光束腰和透镜的距离,以及透镜焦距。
import sympy
from sympy.physics.optics import conjugate_gauss_beams
l, w_i, w_o, f = sympy.symbols('l w_i w_o f')
x_i, x_o, f_1 = conjugate_gauss_beams(l, w_i, w_o,
f=f)
sympy.latex(x_i)
sympy.latex(x_o)
sympy.latex(f_1)
结果如下
xi=f⋅(1−wi2wo2−π2wi4f2l2)x_i=f\\cdot(1 - \\sqrt{\\frac{w_{i}^{2}}{w_{o}^{2}} - \\frac{\\pi^{2} w_{i}^{4}}{f^{2} l^{2}}}) xi=f⋅(1−wo2wi2−f2l2π2wi4)
xo=1/(−1f(1−wi2wo2−π2wi4f2l2)+π2wi4l2(f(1−wi2wo2−π2wi4f2l2)−f)+1f)x_o=1/({- \\frac{1}{f \\left(1 - \\sqrt{\\frac{w_{i}^{2}}{w_{o}^{2}} - \\frac{\\pi^{2} w_{i}^{4}}{f^{2} l^{2}}}\\right) + \\frac{\\pi^{2} w_{i}^{4}}{l^{2} \\left(f \\left(1 - \\sqrt{\\frac{w_{i}^{2}}{w_{o}^{2}} - \\frac{\\pi^{2} w_{i}^{4}}{f^{2} l^{2}}}\\right) - f\\right)}} + \\frac{1}{f}})\\\\ xo=1/(−f(1−wo2wi2−f2l2π2wi4)+l2(f(1−wo2wi2−f2l2π2wi4)−f)π2wi41+f1)
上面这好大一坨的xox_oxo可以把xix_ixi带进去
xo=1/(−1xi+π2wi4l2(xi−f)+1f)x_o=1/({- \\frac{1}{x_i + \\frac{\\pi^{2} w_{i}^{4}}{l^{2} \\left(x_i - f\\right)}} + \\frac{1}{f}})\\\\ xo=1/(−xi+l2(xi−f)π2wi41+f1)
高斯光束通过透镜
与此相关的另一个问题是,若有一个瑞利长度为zrinz_{r_{in}}zrin的光线,在距离束腰位置sins_{in}sin处遇到一个透镜,已知透镜焦距,那么出射光是什么样的?gaussian_conj
就解决这个问题
from sympy.physics.optics import gaussian_conj
s_i, z_r_i, f = sympy.symbols('s_i z_r_i f')
s_o, z_r_o, m = gaussian_conj(s_i, z_r_i, f)
sympy.latex(s_o)
sympy.latex(z_r_o)
sympy.latex(m)
结果为
so=1/(−1si+zri2/(si−f)+1f)zro=zri1−(si2−zri2)/f2m=11−si2f2+zri2f2s_o = 1/(-\\frac{1}{s_{i} + z_{r i}^{2}/(s_i-f)} + \\frac{1}{f})\\\\ z_{r o} = \\frac{z_{r i}}{1 -(s_{i}^{2}-z_{r i}^{2})/f^2}\\\\ m = \\frac{1}{\\sqrt{1 - \\frac{s_{i}^{2}}{f^2} + \\frac{z_{r i}^2}{f^2}}} so=1/(−si+zri2/(si−f)1+f1)zro=1−(si2−zri2)/f2zrim=1−f2si2+f2zri21