拉盖尔高斯光束表达式及Python代码

1. 拉盖尔-高斯光束的电场分布通常可以用以下表达式来表示:

2. Python代码表示

import numpy as np
import matplotlib.pyplot as plt
from scipy.special import genlaguerre
import math

def laguerre_gaussian_beam(r, phi, z, l, p, w0, wavelength):
    k = 2 * np.pi / wavelength
    z_R = np.pi * w0**2 / wavelength
    w_z = w0 * np.sqrt(1 + (z / z_R)**2)
    R_z = z * (1 + (z_R / z)**2)
    zeta_z = np.arctan(z / z_R)
    
    normalization = np.sqrt(2 * math.factorial(p) / (np.pi * math.factorial(p + l)))
    radial_term = (np.sqrt(2) * r / w_z)**l * genlaguerre(p, l)(2 * r**2 / w_z**2)
    gauss_term = np.exp(-r**2 / w_z**2)
    phase_term = np.exp(-1j * (k * z + k * r**2 / (2 * R_z) - (2 * p + l + 1) * zeta_z + l * phi))
    
    E_lp = normalization * (1 / w_z) * radial_term * gauss_term * phase_term
    return E_lp

# 参数设置
l = 1
p = 0
w0 = 1.0
wavelength = 1.0
z = 0.00000001

# 生成坐标网格
x = np.linspace(-5, 5, 400)
y = np.linspace(-5, 5, 400)
X, Y = np.meshgrid(x, y)
r = np.sqrt(X**2 + Y**2)
phi = np.arctan2(Y, X)

# 计算拉盖尔-高斯光束
E_lp = laguerre_gaussian_beam(r, phi, z, l, p, w0, wavelength)

# 绘制光束强度分布
plt.figure(figsize=(8, 8))
plt.imshow(np.abs(E_lp)**2, extent=(-5, 5, -5, 5), origin='lower', cmap='inferno')
plt.colorbar(label='Intensity')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Laguerre-Gaussian Beam Intensity Distribution')
plt.show()

3. 效果图

 

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值