返回顶部
首页 > 资讯 > 后端开发 > Python >Python光学仿真学习衍射算法初步理解
  • 129
分享到

Python光学仿真学习衍射算法初步理解

2024-04-02 19:04:59 129人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

对衍射最经典的解释是Huygens-Fresnel原理,Huygens认为波阵面上每一点都会成为新的波源,这些子波源的相互干涉就形成了衍射。这显然是一种离散的观点,仿佛是专门为程序员

对衍射最经典的解释是Huygens-Fresnel原理,Huygens认为波阵面上每一点都会成为新的波源,这些子波源的相互干涉就形成了衍射。这显然是一种离散的观点,仿佛是专门为程序员准备的一样。

假设一束光打在一个方形孔上,这个方形孔被细分成 n×n个网格,那么每个网格都相当于是一个小孔,而这些小孔的互相干涉,即为衍射。随着网格不断被细分,最终可以逼近真实的衍射情形。那么,假设矩孔处为等相位面,其网格坐标为  (i,j),到衍射屏距离为 d d d,那么对于衍射屏上任意一点P(x,y),其光强为

在这里插入图片描述

同理,我们刚刚写下的平面矩孔光强叠加也出现了问题,如果我们默认矩孔上每个格点都是一个点光源,那么打在衍射屏上之后,应该遵从球面波的衰减原则。又因为这种假设其实忽略了从光源射到矩孔过程中的光线的传播方向,所以应该有一个倾斜因子,即 ( i , j ) 点打在 ( x , y )点的光强为

在这里插入图片描述


#基尔霍夫衍射,衍射屏坐标范围-dGrid:dGrid,光源坐标(0,0)
#简单的矩孔衍射,dSource为光源到小孔的距离;dScreen为衍射屏到小孔距离
#dHole为矩孔网格尺寸;dGrid为衍射屏网格尺寸;nGrid为网格数目
def squareDiff(dSource=1,dScreen=1.4,dWave=1e-6,
            dHole=3e-5,nGrid=100,dGrid=1e-5):
    nX,nY = nGrid*np.array([1,1])
    axisX = np.arange(-nX,nX+1)*dGrid       
    axisY = np.arange(-nY,nY+1)*dGrid
    xAxis,yAxis = np.meshgrid(axisX,axisY)  #此为衍射屏的x坐标
    axisX = np.arange(-nX,nX+1)*dHole       
    axisY = np.arange(-nY,nY+1)*dHole
    xHole,yHole = np.meshgrid(axisX,axisY)  #此为矩孔的x坐标
    dArrS = np.sqrt(xHole**2+yHole**2+dSource**2)   #孔平面到光源的距离
    nSide = int(nGrid*2+1)              #格点个数
    pane = np.zeros([nSide,nSide])      #衍射屏强度
    for m in range(nSide):
        for n in range(nSide):
            dArr = np.sqrt((xHole-xAxis[m,n])**2+(yHole-yAxis[m,n])**2+dScreen**2)
            pane[m,n] = np.sum(
                np.cos(np.pi*2*(dArr+dArrS)/dWave)/dArr/dArrS)
    pane = np.abs(pane)
    pane = pane/np.max(np.array(pane))
    fig = plt.figure()
    ax = axd(fig)
    ax.plot_surface(xAxis,yAxis,pane)
    plt.show()
    return pane, xAxis, yAxis

其结果为

在这里插入图片描述

在这里插入图片描述

故可定义矩阵索引


#输入对于M*M矩阵的第一个值到N*N矩阵的距离,返回M(m,n)的距离矩阵
def getDisMat(dMat,N,m,n):
    dMat = np.mat(dMat)
    A = dMat[1:m,1:n]
    B = dMat[1:m,0:N-n+1]
    C = dMat[0:N-m+1,1:n]
    D = dMat[0:N-m+1,0:N-n+1]
    return np.vstack((np.hstack((np.flip(A),np.flipud(B))),np.hstack((np.fliplr(C),D))))    #stack矩阵拼接,flip翻转矩阵

相应地算法改为(其他位置不变)


    dArrS = np.sqrt(xHole**2+yHole**2+dSource**2) #孔平面到光源的距离
    dScreen = np.sqrt(                             #衍射平上第(0,0)个点的距离矩阵
        (xHole-xAxis[0,0])**2+(yHole-yAxis[0,0])**2+dScreen**2)
    nSide = int(nGrid*2+1)              #格点个数
    pane = np.zeros([nSide,nSide])      #衍射屏强度
    for m in range(nSide):
        for n in range(nSide):
            dArr = getDisMat(dScreen,nSide,m,n)

但这种优化是极其有限的,这是直观无脑的思维方式所带来的麻烦。在接下来的傅里叶光学中,我们将继续处理衍射的计算问题。

以上就是python光学仿真学习衍射算法初步理解的详细内容,更多关于Python光学仿真衍射算法的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python光学仿真学习衍射算法初步理解

本文链接: https://lsjlt.com/news/154948.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python光学仿真学习衍射算法初步理解
    对衍射最经典的解释是Huygens-Fresnel原理,Huygens认为波阵面上每一点都会成为新的波源,这些子波源的相互干涉就形成了衍射。这显然是一种离散的观点,仿佛是专门为程序员...
    99+
    2024-04-02
  • Python光学仿真理解Jones矩阵学习
    目录Jones向量Jones矩阵Jones矩阵的表示Jones向量 假设光波沿z轴传播,那么其三个方向的电场分量可以表示为 Jones矩阵 能够保证二维列向量形状不变的运算有无穷...
    99+
    2024-04-02
  • Python光学仿真光的偏振编程理解学习
    光的偏振 由于光波是横波,所以对于任意一个光波,其振幅方向与传播方向在一个固定的平面内。换言之,一束光波可以存在振幅方向不同的一群光波,对于其中一个光波而言,其振幅方向即为偏振方向。...
    99+
    2024-04-02
  • Python光学仿真之对光的干涉理解学习
    光的干涉 干涉即两束光在叠加过程中出现的强度周期性变化情况,其最简单的案例即为杨氏双缝干涉。 如图所示,光从 S S S点发出,通过两个狭缝 S 1 , S 2 S_1,S_2 S...
    99+
    2024-04-02
  • python光学仿真相速度和群速度计算理解学习
    目录波动模型相速度群速度从编程的角度来说,波动光学在某些情况下可以简单地理解为在光线模型的基础上,引入一个相位项。 波动模型 一般来说,三个特征可以确定空间中的波场:频率、振幅和相位...
    99+
    2024-04-02
  • Python光学仿真学习处理高斯光束分布图像
    目录通过python处理光斑图像1 相关包与图像读取2 图像截取3显示强度4数据拟合问题通过python处理光斑图像 1 相关包与图像读取 首先需要科学计算必备包numpy和画图包m...
    99+
    2024-04-02
  • Python光学仿真从Maxwell方程组到波动方程矢量算法理解学习
    Maxwell方程组是十九世纪最伟大的公式,代表了传统物理学人对公式美学的孜孜追求,也影响了无数后来者的物理美学品味。 回顾历史,当1864年,Maxwell发出那篇著名的《电磁场的...
    99+
    2024-04-02
  • python光学仿真实现光线追迹折射与反射的实现
    目录折射与反射平面反射平面折射python实现弧面问题折射与反射 光线与光学元件相互作用,无非只有两件事,反射和透射。而就目前看来,我们所常用的光学元件,也无非有两种表面,即平面和球...
    99+
    2024-04-02
  • Python光学仿真学习Gauss高斯光束在空间中的分布
    目录Gauss光束强度的表达式为 如图所示 左上图和左下图表示激光传输过程中的其束腰半径的变化情况;右图则表示高斯光束某一横截面处激光的能量分布。 绘制代码如下 import...
    99+
    2024-04-02
  • python光学仿真学习wxpython创建手速测试程序
    滚动条是什么大家自然都是知道的,可以非常直观地显示数据的变化,或者可以非常方便地改变某些数值。 此前在介绍按钮、静态文本、输入文本这三个控件时,相对来说比较乏味,所以这次我们采用需求...
    99+
    2024-04-02
  • Python光学仿真wxpython透镜演示系统计算与绘图
    目录计算与绘图计算与绘图 这里的计算主要包括两个部分,分别是通过滚动条的参数得到光学器件的特征,这一点此前已经备述。其二则是光在传播过程中所产生的各种行为,反射折射函数也都已经讲过了...
    99+
    2024-04-02
  • python光学仿真PyQt5基础框架的方法是什么
    本篇内容介绍了“python光学仿真PyQt5基础框架的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这篇先来说说PyQt5创建时...
    99+
    2023-06-25
  • Python光学仿真wxpython透镜演示系统初始化与参数调节
    初始化与参数调节面板 这一节将绘制出如下图所示的参数调节面板 对于上图来说,BoxSizer布局十分傻瓜,所以这里主要有两个方面需要注意,其一是opti和source这两个选项卡的...
    99+
    2024-04-02
  • Python光学仿真实现波长与颜色之间对应关系示例解析
    目录光的颜色python实现为绘制光谱光的颜色 与其说颜色是光的一种属性,不如说是人眼对可见光频率范围内的一种感应,是人眼的一种属性。而人眼对光频的感应包括三个方面,即明度、色调和饱...
    99+
    2024-04-02
  • Python光学仿真数值分析求解波动方程绘制波包变化图
    波动方程数值解 波动方程是三大物理方程之一,也就是弦振动方程,其特点是时间与空间均为二阶偏导数。其自由空间解便是我们熟知的三角函数形式,也可以写成自然虚指数形式。 一般来说,既然有了...
    99+
    2024-04-02
  • Python集成学习之Blending算法详解
    目录一、前言二、Blending介绍三、Blending流程图四、案例一、前言 普通机器学习:从训练数据中学习一个假设。 集成方法:试图构建一组假设并将它们组合起来,集成学习是一种机器学习范式,多个学习器被训练来解决...
    99+
    2022-06-02
    Python Blending算法 python算法
  • 学习Python中A*算法实现的详细步骤
    以此加权图为例,用Python实现A*算法。加权图中的节点用粉红色圆圈表示,并且给出了沿节点的路径的权重。节点上方的数字代表节点的启发式值。 首先为算法创建类。一个用于存储与起始节点的距离,另一个用于存储父节点。并将它们初始化...
    99+
    2024-01-23
  • Python深度强化学习之DQN算法原理详解
    目录1 DQN算法简介2 DQN算法原理2.1 经验回放2.2 目标网络3 DQN算法伪代码DQN算法是DeepMind团队提出的一种深度强化学习算法,在许多电动游戏中达到人类玩家甚...
    99+
    2024-04-02
  • 对于初学者来说,Python异步编程和Linux编程算法的学习路线应该如何规划?
    Python和Linux是当今最受欢迎的编程语言之一,其中Python异步编程和Linux编程算法是非常重要的学习内容。对于初学者来说,学习路线的规划是非常重要的,下面将为大家详细介绍Python异步编程和Linux编程算法的学习路线。 ...
    99+
    2023-09-22
    异步编程 linux 编程算法
  • Python机器学习之PCA降维算法详解
    目录一、算法概述二、算法步骤三、相关概念四、算法优缺点五、算法实现六、算法优化一、算法概述 主成分分析 (Principal ComponentAnalysis,PCA)是一种掌握事物主要矛盾的统计分析方法...
    99+
    2022-06-02
    Python PCA降维算法 python机器学习
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作