Python光学仿真:深入解析光的干涉现象与模型实现

小满
小满
发布时间:2026-10-14| 5人浏览过
原创

本文基于Python深入解析光的干涉原理,通过杨氏双缝干涉模型展示光波叠加产生的强度周期性变化。文章提供了完整的Python仿真代码,涵盖从基础双缝到Fresnel双面镜、双棱镜等复杂光学装置的干涉计算,帮助读者理解相位差、光程差及衍射强度分布的实际应用。

光的干涉

干涉是指两束或多束光波在空间叠加时,由于相位关系导致的强度出现周期性分布变化的现象。这一物理过程最经典的实验案例便是杨氏双缝干涉实验,它直观地展示了光的波动性。

如示意图所示,光源从点S发出,光线穿过两个狭窄的狭缝S1和S2。这两束光在传播过程中发生衍射,最终投射到右侧的干涉屏上。由于光程的不同,干涉屏上不同位置的光波会产生不同的相位差,从而形成明暗相间的干涉条纹。


import numpy as np
import matplotlib.pyplot as plt
#两束光叠加
waveAdd = lambda I1,I2,theta : I1+I2+2*np.sqrt(I1*I2)*np.cos(theta)
#同一束光经过小孔之后的光程差,dSlit为小孔间距,dWave为波长
#point为衍射屏上某点,theta为衍射屏相对小孔所在直线倾角
def interSlit(dSlit,point=(1,1,1),n=1,dWave=1.06e-6):
    pVar = sum(np.array(point)**2) + 0.25*dSlit**2
    delt = 2*np.pi*n/dWave*(
        np.sqrt(pVar+point[0]*dSlit)-
        np.sqrt(pVar-point[0]*dSlit))
    return delt
#杨氏干涉,只考虑x方向
#dSlit:小孔间距;dScreen:衍射屏距离
#nGrid:网格个数;dGrid:网格间距
def interYang(dSlit=1e-3,dScreen=1,n=1,I1=1,I2=1,
              dWave=1.06e-6,nGrid=500,dGrid=1e-5):
    xAxis = np.arange(-nGrid,nGrid+1)*dGrid
    I = [waveAdd(I1,I2,interSlit(
            dSlit,(x,0,dScreen),n,dWave)) 
            for x in xAxis]
    plt.plot(xAxis,I)
    plt.show()

通过计算可以得到对应的衍射强度分布图,该图直观反映了干涉条纹的强度变化规律。

双缝干涉模型具有极高的实用价值,广泛应用于多种光学装置的设计与分析中。常见的应用实例包括Fresnel双面镜、Fresnel双棱镜、Lloyd镜以及Billet剖开透镜等。其中,Fresnel双面镜的结构示意图展示了其独特的光学路径设计。

当光源入射到双面镜后,镜面反射会在镜后形成两个虚像点P和Q。这两个虚像点在光学效果上等效于一对相干小孔(即杨氏双缝中的两个狭缝),因此可以在右侧的干涉屏上产生清晰的干涉图样。

该装置的仿真过程与杨氏双缝干涉极为相似,主要区别在于通过几何关系将虚像点转换为等效的小孔间距。其生成的干涉图像与杨氏干涉结果在形态上高度一致,验证了模型的有效性。


#alpha为双镜锐角,dSA为光源到劈点距离,dScreen为S像点连线到干涉屏距离
def lensFresnel(alpha=0.1,dSA=1e-3,dScreen=1,
                n=1,I1=1,I2=1,dWave=1.06e-6,
                nGrid=500,dGrid=1e-4):
    dSlit = 2*dSA*np.sin(alpha)
    interYang(dSlit,dScreen,n,I1,I2,dWave,nGrid,dGrid)

以上就是Python光学仿真中关于光的干涉理解与实现的详细内容,更多关于Python理解光的干涉的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。