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

🎯要点

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

📜光学和散射用例

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python高斯光束

激光器通常产生所谓的高斯光束,其中光束电场分布的横向轮廓可以用高斯函数来描述:
E ( r , z ) ∝ exp ⁡ ( − r 2 w ( z ) 2 ) exp ⁡ [ i φ ( z , r ) ] E(r, z) \propto \exp \left(-\frac{r^2}{w(z)^2}\right) \exp [i \varphi(z, r)] E(r,z)exp(w(z)2r2)exp[iφ(z,r)]
这里, r r r是距光束轴的距离, z z z是沿传播方向的坐标, w ( z ) w(z) w(z)是所谓的高斯光束半径, φ ( z r r ) \varphi\left(z_r r\right ) φ(zrr) 是描述沿光束的相位演化以及波前曲率的术语:
φ ( z , r ) = k z − arctan ⁡ z z R + k r 2 2 R ( z ) \varphi(z, r)=k z-\arctan \frac{z}{z_{ R }}+\frac{k r^2}{2 R(z)} φ(z,r)=kzarctanzRz+2R(z)kr2
这里, k = 2 π / λ k=2 \pi / \lambda k=2π/λ 是波数, R ( z ) R(z) R(z) 是波前曲率,并且
z R = π w 0 2 λ z_{ R }=\frac{\pi w_0^2}{\lambda} zR=λπw02
是根据光束焦点处的光束半径 w 0 w_0 w0 计算的瑞利长度(或瑞利范围)。光束半径根据以下公式演变
w ( z ) = w 0 1 + ( z z R ) 2 w(z)=w_0 \sqrt{1+\left(\frac{z}{z_{ R }}\right)^2} w(z)=w01+(zRz)2
曲率半径为
R ( z ) = z [ 1 + ( z R z ) 2 ] R(z)=z\left[1+\left(\frac{z_{ R }}{z}\right)^2\right] R(z)=z[1+(zzR)2]
该图显示了焦点周围光束半径的演变以及波前曲率,在靠近和远离光束焦点时波前曲率较弱。光束强度为
I ( r , z ) = P π w ( z ) 2 / 2 exp ⁡ [ − 2 r 2 w ( z ) 2 ] I(r, z)=\frac{P}{\pi w(z)^2 / 2} \exp \left[-2 \frac{r^2}{w(z)^2}\right] I(r,z)=πw(z)2/2Pexp[2w(z)2r2]
对于 r = w r=w r=w,它在轴上达到其值的 ≈ 13.5 % \approx 13.5 \% 13.5%。对于 z ≫ z R z \gg z_R zzR,光束半径以接近线性的方式演变,发散角定义为
θ = ∂ w ∂ z = λ π w 0 \theta=\frac{\partial w}{\partial z}=\frac{\lambda}{\pi w_0} θ=zw=πw0λ
该方程表明,光束参数积(定义为光束腰半径 w 0 w_0 w0 与发散角的乘积)为 λ / n \lambda / n λ/n,因此与 w 0 w_0 w0 无关。事实上,高斯光束具有尽可能小的(衍射受限)光束参数积,这可以解释为尽可能高的光束质量。

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

Python模拟高斯光束

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

高斯光束可以通过其(径向)腰部 w 0 w_0 w0、瑞利范围 z R = π ∗ w 0 2 λ z_R=\frac{\pi * w_0^2}{\lambda} zR=λπw02 及其腰部位置 z 0 z_0 z0 来定义。

w0 = 1E-3 
lam = 355E-9 
zR = bs.Zr(w0, lam)
z0 = 0 
d = sym.symbols('d')
M = bs.prop(d)
R, w = bs.q1_inv_func(0, w0, lam, M)

绘图腰部图形

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

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

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))

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

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)

准直光束

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))

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

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)

👉参阅、更新:计算思维 | 亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/405705.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作业08.21

服务器&#xff1a; #include <myhead.h>#define SER_PORT 6666 #define SER_IP "127.0.0.1"int find_client(int *client_arr, int len, int client) {for(int i0; i<len; i){if(client_arr[i] client){return i;}}return -1; }void remove_client(int *…

python爬虫--pyquery解析库整理

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理python的爬虫解析库pyquery的语法 简洁快速的整理&#xff0c;建议有前端基础的人看 pyquery解析原理 pyquery的原理就是拿到网站的前端源码后&#xff0c;我们根据我们需求信息所在的标签进行筛选。 选…

漏洞挖掘 | 记一次edusrc--轻松拿下中危信息泄露

1.前言 也是一次漏洞挖掘的思路分享 上次我们讲过了关于小程序方面的一些小思路&#xff0c;即关于抓包更改id号造成的一个信息泄露&#xff0c;但是在小程序上的信息泄露很难涉及到公民三要素这是一个痛点&#xff0c;今天就来分享一下一次edu挖掘时挖到的一个涉及公民三要素…

【云备份】项目总结

文章目录 项目总结项目总结项目扩展:常见问题: 项目总结 项目总结 搭建云备份服务器与客户端&#xff0c;客户端程序运行在客户机上自动将指定目录下的文件备份到服务器&#xff0c;并且能够支持浏览器查看与下载&#xff0c;其中下载支持断点续传功能&#xff0c;并且服务器端…

kubernetes的pod基础

kubernetes的pod基础 pod概念 pod&#xff08;豆荚&#xff09;&#xff0c;是k8s的最小管理单元。是一个或多个容器的组合&#xff0c;这些容器共享存储&#xff0c;网络和命名空间&#xff0c;以及运行规范&#xff0c;pod内的容器统一的进行安排和调度。pod是一组具有共享命…

【TCP/IP】自定义应用层协议,常见端口号

互联网中&#xff0c;主流的是 TCP/IP 五层协议 5G/4G 上网&#xff0c;是有自己的协议栈&#xff0c;要比 TCP/IP 更复杂&#xff08;能够把 TCP/IP 的一部分内容给包含进去了&#xff09; 应用层 可以代表我们所编写的应用程序&#xff0c;只要应用程序里面用到了网络通信…

进程间的通信3——IPC对象通信->共享内存、网络通信

一、共享内存 1、原理 直接对实际物理内存进行操作&#xff0c;不用先拷贝到用户空间再到内核空间&#xff08;物理内存&#xff09;。 2、特点 &#xff08;1&#xff09;共享内存是一块内核预留的空间&#xff1b; &#xff08;2&#xff09;最高效的通信方式。 3、操作 产…

springboot+Quartz通过数据库控制定时任务执行与时间

前言 在我们的springboot项目中&#xff0c;有很多种实现定时任务的方式 有用最简单的 Scheduled 实现定时任务,即&#xff1a; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;Component EnableScheduling p…

【RTT-Studio】详细使用教程十三:UART的DMA 接收及轮询发送

文章目录 一、简介二、RTT配置三、使用信号量接收四、使用消息队列接收五、测试验证 一、简介 串口是指数据一位一位地顺序传送&#xff0c;其特点是通讯线路简单&#xff0c;只要一对传输线就可以实现双向通信&#xff08;可以直接利用电话线作为传输线&#xff09;&#xff0…

我的创作纪念日【2048】

机缘 2048&#xff0c;是计算机二进制世界里很奇妙的数字&#xff0c;在CSDN上创作的第六年&#xff0c;记录从事本行业的知识学习与总结&#xff0c;好记性不如烂笔头&#xff0c;或许写的东西不如大佬的文章&#xff0c;那么有深度&#xff0c;但自己也是在坚持&#xff0c;…

自动微分autograd实践要点

目录 定义Value手动定义每个 operator 的 _backward() 函数构建反向传播计算链 本文主要参考 反向传播和神经网络训练 大神Andrej Karpathy 的“神经网络从Zero到Hero 系列”之一&#xff0c;提炼一些精要&#xff0c;将反向传播的细节和要点展现出来 定义Value 第一步首先要…

传知代码-自动化细胞核分割与特征分析(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 引言 细胞核分割和分类在医学研究和临床诊断中具有重要意义。精准的细胞核分割能够帮助医生更好地识别和分析细胞核的形态学特征&#xff0c;从而辅助疾病诊断、癌症检测以及药物研发。HoverNet是一种基于深度学…

【GitLab】使用 Docker engine安装 GitLab 2: gitlab-ce:17.3.0-ce.0 拉取

ce版本必须配置代理。 极狐版本可以直接pull 社区版GitLab不支持Alibaba Cloud Linux 3,本操作以Ubuntu/Debian系统为例进行说明,其他操作系统安装说明,请参见安装社区版GitLab。 docker 环境重启 sudo systemctl daemon-reload sudo systemctl restart docker脚本安装 安裝…

苹果手机微信聊天记录删除了怎么恢复?

在日常使用手机的过程中&#xff0c;我们经常会遇到误删微信聊天记录的情况&#xff0c;尤其是对于那些重要的对话记录&#xff0c;一旦丢失可能会带来不小的困扰。今天&#xff0c;我们就来探讨一下如何在苹果手机上恢复被删除的微信聊天记录。 一、利用第三方数据恢复工具 对…

拓客工具,助你多维度筛选客源!

随着大数据与人工智能技术的飞速发展&#xff0c;企业拓客的方式也迎来了前所未有的变革。在这里将分享如何利用拓客工具&#xff0c;在任意行业中精实现高效拓客。 一、高级搜索&#xff1a;最新企业&#xff01; 传统的客户开发方式往往依赖于广撒网式的营销手段&#xff0c;…

Qt实现tcp协议

void Widget::readyRead_slot() {//读取服务器发来的数据QByteArray msg socket->readAll();QString str QString::fromLocal8Bit(msg);QStringList list str.split(:);if(list.at(0) userName){QString str2;for (int i 1; i < list.count(); i) {str2 list.at(i);…

作业8/21

client cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), socket(new QTcpSocket(this)) {ui->setupUi(this); // 设置 UI 界面// 控件初始状态设置为禁用&#xff0c;防止未连接…

Linux timedatectl 命令

timedatectl 是 Linux 系统中用于查询和更改系统日期、时间和时区的工具&#xff0c;它特别适用于那些使用 systemd 作为系统和服务管理器的系统。语法格式为“timedatectl [参数]”。 发现电脑时间跟实际时间不符&#xff1f;如果只差几分钟的话&#xff0c;我们可以直接调整。…

tekton通过ceph挂载node_modules的时候报错failed to execute command: copying dir: symlink

分析&#xff1a; 如果ceph的mountPath和workingDir路径一致的话&#xff0c;就会报错。 解决&#xff1a;node_modules挂载到/workspace下&#xff0c;workingDir的代码mv到/workspace下进行构建。

MyBatis-Plus与PageHelper依赖的jsqlparser库冲突

问题 最近遇到的一个项目升级了SpringBoot到3.x版本了&#xff0c;同时也准备升级MyBatis-Plus&#xff0c;即使用如下依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><…