极化

该模块实现了模拟光场偏振的例程,并可用于计算偏振光学元件对光场的影响。

  • 琼斯向量。

  • 斯托克斯矢量。

  • 琼斯矩阵。

  • Mueller 矩阵。

示例

我们计算一个通用的 Jones 向量:

>>> from sympy import symbols, pprint, zeros, simplify
>>> from sympy.physics.optics.polarization import (jones_vector, stokes_vector,
...     half_wave_retarder, polarizing_beam_splitter, jones_2_stokes)
>>> psi, chi, p, I0 = symbols("psi, chi, p, I0", real=True)
>>> x0 = jones_vector(psi, chi)
>>> pprint(x0, use_unicode=True)
⎡-ⅈ⋅sin(χ)⋅sin(ψ) + cos(χ)⋅cos(ψ)⎤
⎢                                ⎥
⎣ⅈ⋅sin(χ)⋅cos(ψ) + sin(ψ)⋅cos(χ) ⎦

以及更一般的斯托克斯矢量:

>>> s0 = stokes_vector(psi, chi, p, I0)
>>> pprint(s0, use_unicode=True)
⎡          I₀          ⎤
⎢                      ⎥
⎢I₀⋅p⋅cos(2⋅χ)⋅cos(2⋅ψ)⎥
⎢                      ⎥
⎢I₀⋅p⋅sin(2⋅ψ)⋅cos(2⋅χ)⎥
⎢                      ⎥
⎣    I₀⋅p⋅sin(2⋅χ)     ⎦

我们计算琼斯矢量如何被半波片修改:

>>> alpha = symbols("alpha", real=True)
>>> HWP = half_wave_retarder(alpha)
>>> x1 = simplify(HWP*x0)

我们计算了一个非常常见的操作,即将光束通过半波片,然后通过偏振分束器。我们通过将这个Jones矢量作为两Jones矢量状态的第一个条目,并由一个4x4的Jones矩阵建模的偏振分束器进行变换,以获得透射和反射的Jones矢量:

>>> PBS = polarizing_beam_splitter()
>>> X1 = zeros(4, 1)
>>> X1[:2, :] = x1
>>> X2 = PBS*X1
>>> transmitted_port = X2[:2, :]
>>> reflected_port = X2[2:, :]

这使我们能够计算两个端口的功率如何依赖于初始极化:

>>> transmitted_power = jones_2_stokes(transmitted_port)[0]
>>> reflected_power = jones_2_stokes(reflected_port)[0]
>>> print(transmitted_power)
cos(-2*alpha + chi + psi)**2/2 + cos(2*alpha + chi - psi)**2/2
>>> print(reflected_power)
sin(-2*alpha + chi + psi)**2/2 + sin(2*alpha + chi - psi)**2/2

有关更多详细信息和示例,请参阅各个函数的描述。

引用

sympy.physics.optics.polarization.half_wave_retarder(theta)[源代码][源代码]

角度为 theta 的半波延迟器琼斯矩阵。

参数:
theta数值类型或 SymPy 符号

快轴相对于水平面的角度。

返回:
SymPy 矩阵

表示延迟器的Jones矩阵。

示例

一个通用的半波片。

>>> from sympy import pprint, symbols
>>> from sympy.physics.optics.polarization import half_wave_retarder
>>> theta= symbols("theta", real=True)
>>> HWP = half_wave_retarder(theta)
>>> pprint(HWP, use_unicode=True)
⎡   ⎛     2         2   ⎞                        ⎤
⎢-ⅈ⋅⎝- sin (θ) + cos (θ)⎠    -2⋅ⅈ⋅sin(θ)⋅cos(θ)  ⎥
⎢                                                ⎥
⎢                             ⎛   2         2   ⎞⎥
⎣   -2⋅ⅈ⋅sin(θ)⋅cos(θ)     -ⅈ⋅⎝sin (θ) - cos (θ)⎠⎦
sympy.physics.optics.polarization.jones_2_stokes(e)[源代码][源代码]

返回一个Jones矢量 e 的Stokes矢量。

参数:
eSymPy 矩阵

一个琼斯矢量。

返回:
SymPy 矩阵

一个琼斯矢量。

示例

庞加莱球上的轴。

>>> from sympy import pprint, pi
>>> from sympy.physics.optics.polarization import jones_vector
>>> from sympy.physics.optics.polarization import jones_2_stokes
>>> H = jones_vector(0, 0)
>>> V = jones_vector(pi/2, 0)
>>> D = jones_vector(pi/4, 0)
>>> A = jones_vector(-pi/4, 0)
>>> R = jones_vector(0, pi/4)
>>> L = jones_vector(0, -pi/4)
>>> pprint([jones_2_stokes(e) for e in [H, V, D, A, R, L]],
...         use_unicode=True)
⎡⎡1⎤  ⎡1 ⎤  ⎡1⎤  ⎡1 ⎤  ⎡1⎤  ⎡1 ⎤⎤
⎢⎢ ⎥  ⎢  ⎥  ⎢ ⎥  ⎢  ⎥  ⎢ ⎥  ⎢  ⎥⎥
⎢⎢1⎥  ⎢-1⎥  ⎢0⎥  ⎢0 ⎥  ⎢0⎥  ⎢0 ⎥⎥
⎢⎢ ⎥, ⎢  ⎥, ⎢ ⎥, ⎢  ⎥, ⎢ ⎥, ⎢  ⎥⎥
⎢⎢0⎥  ⎢0 ⎥  ⎢1⎥  ⎢-1⎥  ⎢0⎥  ⎢0 ⎥⎥
⎢⎢ ⎥  ⎢  ⎥  ⎢ ⎥  ⎢  ⎥  ⎢ ⎥  ⎢  ⎥⎥
⎣⎣0⎦  ⎣0 ⎦  ⎣0⎦  ⎣0 ⎦  ⎣1⎦  ⎣-1⎦⎦
sympy.physics.optics.polarization.jones_vector(psi, chi)[源代码][源代码]

对应于具有 \(psi\) 倾斜和 \(chi\) 圆度的偏振椭圆的 Jones 矢量。

参数:
psi数值类型或 SymPy 符号

偏振相对于 \(x\) 轴的倾斜。

chi数值类型或 SymPy 符号

极化椭圆长轴相邻的角度。

返回:
矩阵

一个琼斯矢量。

示例

庞加莱球上的轴。

>>> from sympy import pprint, symbols, pi
>>> from sympy.physics.optics.polarization import jones_vector
>>> psi, chi = symbols("psi, chi", real=True)

一个通用的琼斯矢量。

>>> pprint(jones_vector(psi, chi), use_unicode=True)
⎡-ⅈ⋅sin(χ)⋅sin(ψ) + cos(χ)⋅cos(ψ)⎤
⎢                                ⎥
⎣ⅈ⋅sin(χ)⋅cos(ψ) + sin(ψ)⋅cos(χ) ⎦

水平极化。

>>> pprint(jones_vector(0, 0), use_unicode=True)
⎡1⎤
⎢ ⎥
⎣0⎦

垂直极化。

>>> pprint(jones_vector(pi/2, 0), use_unicode=True)
⎡0⎤
⎢ ⎥
⎣1⎦

对角极化。

>>> pprint(jones_vector(pi/4, 0), use_unicode=True)
⎡√2⎤
⎢──⎥
⎢2 ⎥
⎢  ⎥
⎢√2⎥
⎢──⎥
⎣2 ⎦

反对角极化。

>>> pprint(jones_vector(-pi/4, 0), use_unicode=True)
⎡ √2 ⎤
⎢ ── ⎥
⎢ 2  ⎥
⎢    ⎥
⎢-√2 ⎥
⎢────⎥
⎣ 2  ⎦

右旋圆极化。

>>> pprint(jones_vector(0, pi/4), use_unicode=True)
⎡ √2 ⎤
⎢ ── ⎥
⎢ 2  ⎥
⎢    ⎥
⎢√2⋅ⅈ⎥
⎢────⎥
⎣ 2  ⎦

左旋圆极化。

>>> pprint(jones_vector(0, -pi/4), use_unicode=True)
⎡  √2  ⎤
⎢  ──  ⎥
⎢  2   ⎥
⎢      ⎥
⎢-√2⋅ⅈ ⎥
⎢──────⎥
⎣  2   ⎦
sympy.physics.optics.polarization.linear_polarizer(theta=0)[源代码][源代码]

一个线性偏振器的琼斯矩阵,其透射轴与角度 theta 成一定角度。

参数:
theta数值类型或 SymPy 符号

传输轴相对于水平面的角度。

返回:
SymPy 矩阵

表示偏振器的琼斯矩阵。

示例

一个通用的偏振器。

>>> from sympy import pprint, symbols
>>> from sympy.physics.optics.polarization import linear_polarizer
>>> theta = symbols("theta", real=True)
>>> J = linear_polarizer(theta)
>>> pprint(J, use_unicode=True)
⎡      2                     ⎤
⎢   cos (θ)     sin(θ)⋅cos(θ)⎥
⎢                            ⎥
⎢                     2      ⎥
⎣sin(θ)⋅cos(θ)     sin (θ)   ⎦
sympy.physics.optics.polarization.mueller_matrix(J)[源代码][源代码]

对应于Jones矩阵 \(J\) 的Mueller矩阵。

参数:
JSymPy 矩阵

一个琼斯矩阵。

返回:
SymPy 矩阵

对应的 Mueller 矩阵。

示例

通用光学元件。

>>> from sympy import pprint, symbols
>>> from sympy.physics.optics.polarization import (mueller_matrix,
...     linear_polarizer, half_wave_retarder, quarter_wave_retarder)
>>> theta = symbols("theta", real=True)

A linear_polarizer

>>> pprint(mueller_matrix(linear_polarizer(theta)), use_unicode=True)
⎡            cos(2⋅θ)      sin(2⋅θ)     ⎤
⎢  1/2       ────────      ────────    0⎥
⎢               2             2         ⎥
⎢                                       ⎥
⎢cos(2⋅θ)  cos(4⋅θ)   1    sin(4⋅θ)     ⎥
⎢────────  ──────── + ─    ────────    0⎥
⎢   2         4       4       4         ⎥
⎢                                       ⎥
⎢sin(2⋅θ)    sin(4⋅θ)    1   cos(4⋅θ)   ⎥
⎢────────    ────────    ─ - ────────  0⎥
⎢   2           4        4      4       ⎥
⎢                                       ⎥
⎣   0           0             0        0⎦

半波片

>>> pprint(mueller_matrix(half_wave_retarder(theta)), use_unicode=True)
⎡1              0                           0               0 ⎤
⎢                                                             ⎥
⎢        4           2                                        ⎥
⎢0  8⋅sin (θ) - 8⋅sin (θ) + 1           sin(4⋅θ)            0 ⎥
⎢                                                             ⎥
⎢                                     4           2           ⎥
⎢0          sin(4⋅θ)           - 8⋅sin (θ) + 8⋅sin (θ) - 1  0 ⎥
⎢                                                             ⎥
⎣0              0                           0               -1⎦

四分之一波片

>>> pprint(mueller_matrix(quarter_wave_retarder(theta)), use_unicode=True)
⎡1       0             0            0    ⎤
⎢                                        ⎥
⎢   cos(4⋅θ)   1    sin(4⋅θ)             ⎥
⎢0  ──────── + ─    ────────    -sin(2⋅θ)⎥
⎢      2       2       2                 ⎥
⎢                                        ⎥
⎢     sin(4⋅θ)    1   cos(4⋅θ)           ⎥
⎢0    ────────    ─ - ────────  cos(2⋅θ) ⎥
⎢        2        2      2               ⎥
⎢                                        ⎥
⎣0    sin(2⋅θ)     -cos(2⋅θ)        0    ⎦
sympy.physics.optics.polarization.phase_retarder(theta=0, delta=0)[源代码][源代码]

一个在角度 theta 处具有延迟 delta 的相位延迟器 Jones 矩阵。

参数:
theta数值类型或 SymPy 符号

快轴相对于水平面的角度。

delta数值类型或 SymPy 符号

透射光快轴和慢轴之间的相位差。

返回:
SymPy 矩阵

表示延迟器的Jones矩阵。

示例

一个通用的延迟器。

>>> from sympy import pprint, symbols
>>> from sympy.physics.optics.polarization import phase_retarder
>>> theta, delta = symbols("theta, delta", real=True)
>>> R = phase_retarder(theta, delta)
>>> pprint(R, use_unicode=True)
⎡                          -ⅈ⋅δ               -ⅈ⋅δ               ⎤
⎢                          ─────              ─────              ⎥
⎢⎛ ⅈ⋅δ    2         2   ⎞    2    ⎛     ⅈ⋅δ⎞    2                ⎥
⎢⎝ℯ   ⋅sin (θ) + cos (θ)⎠⋅ℯ       ⎝1 - ℯ   ⎠⋅ℯ     ⋅sin(θ)⋅cos(θ)⎥
⎢                                                                ⎥
⎢            -ⅈ⋅δ                                           -ⅈ⋅δ ⎥
⎢            ─────                                          ─────⎥
⎢⎛     ⅈ⋅δ⎞    2                  ⎛ ⅈ⋅δ    2         2   ⎞    2  ⎥
⎣⎝1 - ℯ   ⎠⋅ℯ     ⋅sin(θ)⋅cos(θ)  ⎝ℯ   ⋅cos (θ) + sin (θ)⎠⋅ℯ     ⎦
sympy.physics.optics.polarization.polarizing_beam_splitter(
Tp=1,
Rs=1,
Ts=0,
Rp=0,
phia=0,
phib=0,
)[源代码][源代码]

一个在角度 \(theta\) 处的偏振分束器琼斯矩阵。

参数:
JSymPy 矩阵

一个琼斯矩阵。

Tp数值类型或 SymPy 符号

P偏振分量的透射率。

Rs数值类型或 SymPy 符号

S-偏振分量的反射率。

Ts数值类型或 SymPy 符号

S-偏振分量的透射率。

Rp数值类型或 SymPy 符号

P偏振分量的反射率。

phia数值类型或 SymPy 符号

输出模式a中,传输和反射分量之间的相位差。

phib数值类型或 SymPy 符号

输出模式 b 中传输和反射分量之间的相位差。

返回:
SymPy 矩阵

一个表示PBS的4x4矩阵。该矩阵作用于一个4x1向量,其前两个条目是PBS一个端口上的Jones向量,最后两个条目是另一个端口上的Jones向量。

示例

通用偏振分束器。

>>> from sympy import pprint, symbols
>>> from sympy.physics.optics.polarization import polarizing_beam_splitter
>>> Ts, Rs, Tp, Rp = symbols(r"Ts, Rs, Tp, Rp", positive=True)
>>> phia, phib = symbols("phi_a, phi_b", real=True)
>>> PBS = polarizing_beam_splitter(Tp, Rs, Ts, Rp, phia, phib)
>>> pprint(PBS, use_unicode=False)
[   ____                           ____                    ]
[ \/ Tp            0           I*\/ Rp           0         ]
[                                                          ]
[                  ____                       ____  I*phi_a]
[   0            \/ Ts            0      -I*\/ Rs *e       ]
[                                                          ]
[    ____                         ____                     ]
[I*\/ Rp           0            \/ Tp            0         ]
[                                                          ]
[               ____  I*phi_b                    ____      ]
[   0      -I*\/ Rs *e            0            \/ Ts       ]
sympy.physics.optics.polarization.quarter_wave_retarder(theta)[源代码][源代码]

在角度 theta 处的四分之一波片琼斯矩阵。

参数:
theta数值类型或 SymPy 符号

快轴相对于水平面的角度。

返回:
SymPy 矩阵

表示延迟器的Jones矩阵。

示例

一个通用的四分之一波片。

>>> from sympy import pprint, symbols
>>> from sympy.physics.optics.polarization import quarter_wave_retarder
>>> theta= symbols("theta", real=True)
>>> QWP = quarter_wave_retarder(theta)
>>> pprint(QWP, use_unicode=True)
⎡                       -ⅈ⋅π            -ⅈ⋅π               ⎤
⎢                       ─────           ─────              ⎥
⎢⎛     2         2   ⎞    4               4                ⎥
⎢⎝ⅈ⋅sin (θ) + cos (θ)⎠⋅ℯ       (1 - ⅈ)⋅ℯ     ⋅sin(θ)⋅cos(θ)⎥
⎢                                                          ⎥
⎢         -ⅈ⋅π                                        -ⅈ⋅π ⎥
⎢         ─────                                       ─────⎥
⎢           4                  ⎛   2           2   ⎞    4  ⎥
⎣(1 - ⅈ)⋅ℯ     ⋅sin(θ)⋅cos(θ)  ⎝sin (θ) + ⅈ⋅cos (θ)⎠⋅ℯ     ⎦
sympy.physics.optics.polarization.reflective_filter(R)[源代码][源代码]

具有反射率 R 的反射滤波器琼斯矩阵。

参数:
R数值类型或 SymPy 符号

滤光片的反射率。

返回:
SymPy 矩阵

表示滤波器的 Jones 矩阵。

示例

一个通用过滤器。

>>> from sympy import pprint, symbols
>>> from sympy.physics.optics.polarization import reflective_filter
>>> R = symbols("R", real=True)
>>> pprint(reflective_filter(R), use_unicode=True)
⎡√R   0 ⎤
⎢       ⎥
⎣0   -√R⎦
sympy.physics.optics.polarization.stokes_vector(psi, chi, p=1, I=1)[源代码][源代码]

对应于倾斜角为 psi 和圆度为 chi 的偏振椭圆的斯托克斯矢量。

参数:
psi数值类型或 SymPy 符号

偏振相对于 x 轴的倾斜角度。

chi数值类型或 SymPy 符号

极化椭圆长轴相邻的角度。

p数值类型或 SymPy 符号

极化程度。

数值类型或 SymPy 符号

场的强度。

返回:
矩阵

一个斯托克斯矢量。

示例

庞加莱球上的轴。

>>> from sympy import pprint, symbols, pi
>>> from sympy.physics.optics.polarization import stokes_vector
>>> psi, chi, p, I = symbols("psi, chi, p, I", real=True)
>>> pprint(stokes_vector(psi, chi, p, I), use_unicode=True)
⎡          I          ⎤
⎢                     ⎥
⎢I⋅p⋅cos(2⋅χ)⋅cos(2⋅ψ)⎥
⎢                     ⎥
⎢I⋅p⋅sin(2⋅ψ)⋅cos(2⋅χ)⎥
⎢                     ⎥
⎣    I⋅p⋅sin(2⋅χ)     ⎦

水平极化

>>> pprint(stokes_vector(0, 0), use_unicode=True)
⎡1⎤
⎢ ⎥
⎢1⎥
⎢ ⎥
⎢0⎥
⎢ ⎥
⎣0⎦

垂直极化

>>> pprint(stokes_vector(pi/2, 0), use_unicode=True)
⎡1 ⎤
⎢  ⎥
⎢-1⎥
⎢  ⎥
⎢0 ⎥
⎢  ⎥
⎣0 ⎦

对角极化

>>> pprint(stokes_vector(pi/4, 0), use_unicode=True)
⎡1⎤
⎢ ⎥
⎢0⎥
⎢ ⎥
⎢1⎥
⎢ ⎥
⎣0⎦

反对角极化

>>> pprint(stokes_vector(-pi/4, 0), use_unicode=True)
⎡1 ⎤
⎢  ⎥
⎢0 ⎥
⎢  ⎥
⎢-1⎥
⎢  ⎥
⎣0 ⎦

右旋圆极化

>>> pprint(stokes_vector(0, pi/4), use_unicode=True)
⎡1⎤
⎢ ⎥
⎢0⎥
⎢ ⎥
⎢0⎥
⎢ ⎥
⎣1⎦

左旋圆极化

>>> pprint(stokes_vector(0, -pi/4), use_unicode=True)
⎡1 ⎤
⎢  ⎥
⎢0 ⎥
⎢  ⎥
⎢0 ⎥
⎢  ⎥
⎣-1⎦

非偏振光

>>> pprint(stokes_vector(0, 0, 0), use_unicode=True)
⎡1⎤
⎢ ⎥
⎢0⎥
⎢ ⎥
⎢0⎥
⎢ ⎥
⎣0⎦
sympy.physics.optics.polarization.transmissive_filter(T)[源代码][源代码]

一个带有透射率 T 的衰减器琼斯矩阵。

参数:
T数值类型或 SymPy 符号

衰减器的透射率。

返回:
SymPy 矩阵

表示滤波器的 Jones 矩阵。

示例

一个通用过滤器。

>>> from sympy import pprint, symbols
>>> from sympy.physics.optics.polarization import transmissive_filter
>>> T = symbols("T", real=True)
>>> NDF = transmissive_filter(T)
>>> pprint(NDF, use_unicode=True)
⎡√T  0 ⎤
⎢      ⎥
⎣0   √T⎦