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

news2024/9/20 1:08:24

🎯要点

🎯平面;曲面;圆柱面;非球面光,双凸透镜;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.coloradmin.cn/o/2049348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Django开发】前后端分离django美多商城项目第1篇:欢迎来到美多 项目主要页面介绍【附代码文档】

本教程的知识点为: 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计: 视图原型 2. 具体视图实现 用户部分 使用Celery完成发送 判断帐号是否存在 1. 判断用户名是否存在 后…

看图学sql之sql 中的窗口函数

数据分析社区直达 免费数据分析资料下载。定期分享数据分析领域的最新动态、实战案例、技术工具评测、数据可视化技巧以及行业洞察报告。

【Arduino】ATmega328PB 单片机初始化配置,连接使用配置 arduino

总览 1.下载资料 2.配置 arduino 首选项 3.配置开发板管理器 4.配置不同 晶振频率 的 mega328PB 的参数设置 一、下载资料 1.你也可以看着资料自己来弄,如果嫌我麻烦 网盘:https://pan.baidu.com/s/13FCKXE8t_AZeixcR_bEhXg 提取密码:123…

从Linux内核探索 Socket 的本质

目录 一、引言 二、Socket 的概念 三、Socket 的使用场景 四、Socket 的设计 五、提供 Socket 层 六、Socket 如何实现网络通信 (一)建立连接 (二)数据传输 七、Socket 怎么实现“继承” 八、总结 一、引言 相信大家刚…

[Zer0pts2020]Can you guess it?1

打开题目 看到信息随便输入一个数&#xff0c;显示错误 查看源代码 看到php代码&#xff0c;代码审计 <?php include config.php; // FLAG is defined in config.php if (preg_match(/config\.php\/*$/i, $_SERVER[PHP_SELF])) { exit("I dont know what you are t…

以node / link文件表征的道路网络-----dijkstra算法yyds-----基于南京公路公开数据做路径规划(上)

前文已经基于公开数据&#xff0c;获得了南京的全域高速公路的路网数据&#xff0c;这些以node / link文件表征的道路网络不仅延续了osm地图中所包含的经纬度、名称、容量等信息 &#xff0c;还包含了一个重要的道路等级字段 “link_type_name”。 交通部门一般以高速公路、国…

ThinkPHP的SQL注入漏洞学习

目录 漏洞环境 漏洞概要 函数学习 call_user_func函数 mplode函数 漏洞分析 漏洞修复 攻击总结 漏洞环境 漏洞存在于 Builder 类的 parseData 方法中。由于程序没有对数据进行很好的过滤&#xff0c;将数据拼接进 SQL 语句&#xff0c;导致 SQL注入漏洞 的产生。 漏洞…

Shell参考 - Linux Shell 训练营

出品方<Linux.cn & 阿里云开发者学堂> 一&#xff0c;Linux 可以划分为以下四个部分&#xff1a; 1. 应用软件 2. 窗口管理软件 Unity Gnome KDE 3. GNU 系统工具链 Software- GNU Project - Free Software Foundation 4. Linux 内核 二&#xff0c;什么是shell 1. L…

一款免费开源电脑流量监控软件,电脑流量统计工具!

TrafficMonitor是一个开源的网络速度监控工具&#xff0c;它能够在Windows平台上以悬浮窗的形式显示当前的网速、CPU和内存使用情况。该工具支持多种显示模式&#xff0c;包括悬浮窗和任务栏显示&#xff0c;并且允许用户更换不同的皮肤来自定义外观样式。此外&#xff0c;Traf…

【MySQL】数据库基础(库的操作)

目录 一、MySQL安装、连接、修改密码操作 二、库的操作 2.1 创建数据库 2.2 字符集和校验规则 2.3 操控数据库 2.4 修改数据库 2.5 删除数据库 2.6 数据库的备份和恢复 2.7 查看连接情况 前情提要&#xff1a; 我的服务器操作系统是Ubuntu20.04&#xff0c;安装的是M…

eNSP 华为远程访问路由器

华为远程访问路由器 前提&#xff1a;主机能与路由器通信就行&#xff0c;如果不同网段就配路由协议&#xff0c;这里直接模拟直连通信 Cloud&#xff1a; R&#xff1a; <Huawei>sys [Huawei]sys R [R]int g0/0/0 [R-GigabitEthernet0/0/0] [R-GigabitEthernet0/0/0]i…

Vue50 todolist自定义事件版本

代码 MyFooter.vue <template><div class"todo-footer" v-show"total"><label><!-- <input type"checkbox" :checked"isAll" change"checkAll"/> --><input type"checkbox" v…

【html】颜色随机产生器(补充包)

上一篇文章我们讲了如何制作一个通过滑动产色纯色背景的网页&#xff0c;今天&#xff0c;我们对那个网页进行一个补充&#xff0c;&#xff08;&#xff09; 因为很多人在设计网页的时候没有颜色的灵感这个时候我们我们就可以考虑通过随机产生一种颜色并且能够实时看到效果的…

Delphi5实现密码、姓名生成器

文章目录 目的效果图密码生成器类类定义成员函数 点击“密码生成”事件名字生成器类类的成员功能概述注意点 点击“姓名生成”事件点击“清空”事件“导出txt”事件“备注”输入框画图软件完整代码 目的 写这个程序的目的是生成一个密码和用于快递的名字&#xff08;生成密码和…

keepalived详细讲解

keepalived&#xff1a; Keepalived是一个基于VRRP&#xff08;‌Virtual Router Redundancy Protocol&#xff0c;‌虚拟路由冗余协议&#xff09;‌协议实现的LVS&#xff08;‌Linux Virtual Server&#xff09;‌服务高可用方案。‌它的主要作用是进行虚拟路由的故障切换&…

算法打卡 Day24(二叉树)-二叉搜索树的最近公共祖先 + 二叉搜索树中的插入操作 + 删除二叉搜索树中的节点

文章目录 Leetcode 235-二叉搜索树的最近公共祖先题目描述解题思路 Leetcode 701-二叉搜索树中的插入操作题目描述解题思路 Leetcode 450-删除二叉搜索树中的节点题目描述解题思路 Leetcode 235-二叉搜索树的最近公共祖先 题目描述 https://leetcode.cn/problems/lowest-comm…

江协科技STM32学习笔记(第10章 SPI通信)

第10章 SPI通信 10.1 SPI通信协议 10.1.1 SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff09;是由Motorola公司开发的一种通用数据总线&#xff1b; 串行外设接口&#xff1b; I2C无论是软件还是软件电路&#xff0c;设计的都还是比较复杂的&#xff0c;硬件…

xss靶场详解

目录 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 8.第八题 1.第一题 在源码script标签里边&#xff0c;innerhtml是用于访问或修改 HTML 元素内的 HTML 内容的&#xff0c;这里是访问spaghet这个元素的&#xff0c;并通过括号里面的东西搜索当前…

【问题解决3】【已解决】Cannot determine path to‘tools.jar‘libraryfor17

前几天在IDEA运行JAVA项目时&#xff0c;出现这个报错。 这是因为是这个笔记本上安装的IDEA版本是“IntelliJ IDEA 2020.3.1”&#xff0c;与JDK17版本不兼容&#xff0c;这种情况下要想使得IDEA版本与JDK版本兼容&#xff0c;就需要升级IDEA版本或者使用JDK较低版本&#xff…

专题---自底向上的计算机网络(计算机网络相关概述)

目录 计算机网络相关概述 物理层 数据链路层 网络层 运输层 应用层 网络安全 1.计算机网络相关概述&#xff08;具体细节http://t.csdnimg.cn/NITAW&#xff09; 什么是计算机网络&#xff1f; 计算机网络是将一个分散的&#xff0c;具有独立功能的计算机系统&#x…