“You will see light in the darkness。You will make some sense of this.”

“你终将于黑暗中触摸白昼,它将如影般随行。”

如果说20世纪是电子的世界,那么21世纪就是光学的舞台。

光学和光子学无处不在:智能手机和计算设备上的显示方式,互联网中承载信息的光纤,先进的精密制造,大量的生物医学应用终端,全光衍射神经网络等。对光学的深入理解为每一个学习物理和工程的同学带来了机遇的同时也带来了挑战。

难懂晦涩,佶屈聱牙,这是大家对光学知识的看法。在这个层面上,掌握光学仿真就尤为重要。

为什么要学习光学仿真?作为一个科研工作者本身,我希望自身理解物理,特别是光学,这不应该仅仅局限于对一组方程的理解,更应该对看得见摸得着的光学现象进行理解。除此之外,考虑到那些或没有充足实验设备的情况,或时间有限无法进行实验室验证的情况,仿真就变得尤为重要。可以说,仿真训练是主动学习的重要组成部分;有相当多的证据表明,主动学习(动手仿真)的效果要优于传统的教学方式(上课-听课模式)。

为什么选择Python?Python (https://www.python.org/)是一种可解释性的、交互式的、面向对象的编程语言,它是开源的、易于学习的。此外,它有非常简单和优雅的语法,适用于初学者。同时,与许多其他脚本语言一样,Python是免费的,甚至可以用于商业目的,并且几乎可以在任何现代计算机上运行的语言。Python程序由解释器自动编译成与平台无关的代码,然后进行解释。不同的操作系统以相同的方式理解完全相同的源代码,从而确保了完美的跨平台兼容性。

目前,有大量的光学仿真模块或光学应用程序是用Python编写的,这些模块使得光学仿真变得极为便利,下面具体介绍两例:贝塞尔函数

Scipy.sepcial模块包含了大量的贝塞尔函数。在这里,我们将使用函数jn和yn,这是第一/第二类贝塞尔函数和实值函数。函数jn_zeros和yn_zeros分别给出了函数jn和yn的零点

源代码如下:

from scipy.special import jn, yn, jn_zeros , yn_zeros

import matplotlib.pyplot as plt

import numpy as np

n = 0

x = 0

#第一类贝塞尔函数

print ("J_%d(%f) = %f" % (n, x, jn(n, x)))

#第二类贝塞尔函数

x = 1

print ("Y_%d(%f) = %f" % (n, x, yn(n, x)))

# zeros of Bessel functions

n = 0 # order

m = 4 # number of roots to compute

print("zeros of Bessel functions are: ", jn_zeros(n, m))

# Plot Bessel fonctions

x = np.linspace(0, 10, 50)

markers=['o','s','*','+']

lines=['-','--','-.',':']

fig, ax = plt.subplots()

for n in range(4):

ax.plot(x, jn(n, x),ls=str(lines[n]),marker=str(markers[n]),label=r"$J_%d(x)$" % n)

ax.legend()

plt.show()

2. 菲涅耳积分

Scipy.special.fresnel 模块返回两个菲涅耳函数,顺序是(FS, FC),其中FS表示菲涅耳正弦积分,FC表示菲涅耳余弦积分。菲涅耳积分与cornu spiral关系密切。

源代码如下:

from scipy.special import fresnel

from scipy import linspace

import matplotlib.pyplot as plt

t = linspace(-10, 10, 1000)

FS, FC = fresnel(t)

fig1=plt.figure(figsize=(10,5))

ax1=plt.subplot(1, 2, 1)

ax1.plot(FC, FS, linewidth=2)

ax1.set_xlabel("C(t)", fontsize=14, weight='bold')

ax1.set_ylabel("S(t)", fontsize=14, weight='bold')

ax1.set_title("Cornu spiral", fontsize=16, weight='bold')

ax2=plt.subplot(1, 2, 2)

ax2.plot(t, FS, ls='--',linewidth=2,label="S(t)", alpha=.8)

ax2.plot(t, FC,ls='-',linewidth=2,label="C(t)", alpha=.8)

ax2.set_xlabel("t", fontsize=14, weight='bold')

ax2.set_title("Fresnel integrals", fontsize=16, weight='bold')

plt.legend()

plt.show()

这些适用于光学仿真的Python模块还在持续大量更新中。相信Python的出现,会使光学仿真变得更加便捷、高效,直至推动光学学科的飞速进步。

python光学仿真_光学现象的Python实现相关推荐

  1. python光学仿真模块_光学现象的Python实现(Understanding optics with Python)

    来自:知乎 本文转载自:https://zhuanlan.zhihu.com/p/104457445 "You will see light in the darkness.You will ...

  2. python超声成像仿真_超声合成孔径成像

    合成孔径算法简介: 有关孔径和合成孔径: 对于通常的(真实孔径)的成像装置而言,在波长一定的情况下,孔径越大,其角分辨率也越大. 假设这是成像装置的"孔径",无穷远处的某种波(光波 ...

  3. python中!ls -r_光学现象的Python实现

    "You will see light in the darkness.You will make some sense of this." "你终将于黑暗中触摸白昼,它 ...

  4. python len函数_知识清单Python必备的69个函数,你掌握了吗?

    本文纲要 Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间.目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很 ...

  5. python优化网站_[练习] 用PYTHON来优化网站中的图片

    我到公司以来,第一次加班,哇,加一晚上加一上午,现在还没下班的迹象,555,困. 对于网站中的一些关键的页面,多重缓存.静态化.程序代码优化--之外,为了提高用户打开页面的速度,图片是必须要优化的. ...

  6. python递归函数例题_递归案例python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 而对应的中文翻译 "递归" 却表达了两个意思:"递 ...

  7. 网易图灵学院python公开课_图灵学院 Python全系列教程全栈工程师 python视频教程下载...

    大家怎么说? 老师很好,我认为,若想学好python,应该多练.多想.多看.学习资料不能仅限于老师给定的这些内容,这些毕竟是入门资料 老师讲的真不错,对于我们这种小白来说 也比较容易懂,虽然有些时候自 ...

  8. python列表拆包_详解python 拆包可迭代数据如tuple, list

    详解python 拆包可迭代数据如tuple, list 拆包是指将一个结构中的数据拆分为多个单独变量中. 以元组为例: >>> a = ('windows', 10, 25.1, ...

  9. php java python容易入门_先学习Python之后再学习PHP与java会更好吗

    学过python语言之后在去学习PHP javascript 这些编程语言是不是会更好的能快速理解, 有python基础之后,再去学习php语言 理解上 是不是更方便上手, 我现在主要想学习专研 PH ...

最新文章

  1. 不能用了 重装系统git_重装新版gitlab时遇到gitlab-rails database初始化失败
  2. 三行情书代码_用三行代码优化您的交易策略
  3. 7-1 FireTruck 消防车 uva208
  4. 13-union 、distinc、 join
  5. php微信支付接口开发程序(一)
  6. ppt拖动就复制_在PPT中有哪些常用快捷键可大大提高效率?
  7. 关于CC2541蓝牙开发板的学习笔记-3
  8. html工资计算页面模板,工资计算.html
  9. java调用Shell脚本
  10. Ubuntu18.04、Ubuntu20.04之ROS安装教程
  11. android viewholder继承,Android RecyclerView中的ViewHolder
  12. 安卓bochs模拟linux_bochs linux镜像下载|bochs模拟器linux镜像下载 v1.0完整版_星星软件园...
  13. 计算机信息单位中1GB等于,1gb等于多少mb 1gb换算多少mb
  14. excel交换两列笔记
  15. Wex5 app 学习笔记(二)
  16. msp430发送pwm信号_msp430单片机实现PWM
  17. Oracle-PL/SQL-Developer-数据从服务器迁移至本地
  18. GSM和GPRS网络原理的基本思路
  19. 【图形设计】用例图这样画,3步让你做需求分析有理有据
  20. @umijs/plugin-locale使用

热门文章

  1. 阿里云边缘云助力东京奥运会高清点播 畅享奥运精彩瞬间
  2. mysql efbbbf_字符集与字符编码
  3. 谐云连续中标建信金科、浦发和杭州银行,助推数字化转型
  4. Android做一个透明的Activity,设置Activity背景为透明style
  5. matlab实现cqt频谱,基于音乐识别的频谱转换算法——CQT
  6. 移植后php感染,除了排斥、感染…移植后容易发生的这项疾病,很多人都忽视了!...
  7. 游戏推广的原理,利用空间,产品的分类
  8. 华为USG统一安全边界网关的设计、演示、经验鉴证实评-卷A
  9. 【OpenCV】CV_8UC3的解析
  10. 从0开始的GNN导学课程笔记