基于MATLAB的光干涉现象数学建模与数值模拟系统
项目介绍
本项目是一个专注于物理光学干涉现象的数学建模与数值仿真系统。它利用MATLAB强大的矩阵运算与科学可视化功能,将抽象的光学公式转化为直观的二维干涉图样与光强分布曲线。系统不仅模拟了干涉条纹的形态,还深入集成了详尽的物理原理计算,包括光程差、相位差及光强分布的精确求解,适用于光学原理教学演示及光场分布的基础验证。 Codebase 采用标准国际单位制(SI)进行内核计算,在可视化阶段自动转换为毫米(mm)或微米(um/nm)以便于观察。
功能特性
系统通过模块化设计实现了三大经典干涉实验的仿真:
- 杨氏双缝干涉:模拟点光源经过双缝后的波的叠加,生成逼真的二维干涉条纹热力图,并同步绘制沿中心轴线的精细光强分布曲线,验证理论条纹间距。
- 等厚干涉(牛顿环与劈尖):基于薄膜干涉原理,模拟空气膜厚度变化导致的干涉现象。包含牛顿环的同心圆条纹模拟及劈尖干涉的等间距直条纹模拟,并包含三维光强曲面图展示膜厚与光强的关系。
- 迈克尔逊干涉仪:模拟分振幅干涉中的等倾干涉现象。通过对比动镜在不同位置的两个状态,展示光程差变化引起的干涉条纹“吞吐”与漂移效应,并计算干涉级次的变化。
系统要求
- 运行环境:MATLAB R2016a 或更高版本(代码使用基础绘图与矩阵运算,不依赖特定工具箱)。
- 硬件要求:标准PC即可,无需高性能GPU。
使用方法
- 确保MATLAB当前工作路径包含项目源码文件。
- 在MATLAB命令行窗口输入主函数名称并回车即可运行。
- 程序将自动清理工作区,依次执行各项模拟,并弹出多个图形窗口展示仿真结果。
- 命令行窗口(Command Window)将输出相关的物理量计算结果,如理论条纹间距、楔角大小、干涉级次变化等。
核心算法与实现细节
系统主要由以下逻辑模块构成,各模块严格对应代码实现的物理过程:
1. 全局配置与主控逻辑
程序入口负责清理运行环境(清空变量、关闭窗口),设定全局绘图属性(如默认字体大小、LaTeX解释器支持),并按顺序调度三个核心仿真子模块。
2. 杨氏双缝干涉模拟模块
该模块基于波的线性叠加原理实现:
- 参数建模:定义了He-Ne激光波长(632.8nm)、缝间距、缝屏距离等物理参数。
- 空间网格化:利用二维网格生成函数创建观察屏的坐标矩阵。
- 光程差计算:不采用近似公式,而是直接计算屏幕上任意像素点到两狭缝的欧几里得距离,求得精确光程差。
- 光强分布:根据相位差计算光强,公式为 $I = 4I_0 cos^2(Delta phi / 2)$。
- 数据可视化:
* 使用热力图(hot colormap)绘制二维干涉图样,模拟红色激光效果。
* 提取中心水平轴线上的数据,绘制一维光强分布剖面图。
* 自动计算并在图上标注理论条纹间距 $Delta x$,与仿真结果进行对照。
3. 等厚干涉模拟模块
该模块模拟薄膜干涉,重点处理光程差随膜厚变化的情况:
* 建立透镜曲率模型,计算不同半径处的空气膜厚度 $h = r^2 / (2R)$。
* 计算光程差时明确引入了由“光疏介质射向光密介质”反射引起的半波损失($lambda/2$)。
* 生成的图像为灰度图,清晰展示中心暗斑及外围疏密变化的同心圆环。
* 构建线性增厚的空气楔膜模型。
* 计算等间距明暗直条纹,并在控制台输出楔角和理论条纹间距。
* 调用辅助绘图逻辑,生成位置、膜厚、光强的三维曲面图,直观展示光强随膜厚周期性变化的物理本质。
4. 迈克尔逊干涉仪模拟模块
该模块模拟等倾干涉,侧重于演示动镜移动对条纹级次的影响:
- 分振幅模型:模拟光源经分光后的两束光通过不同光程后汇聚。
- 动态对比机制:
* 设置两个状态:初始位置 $d1$ 和移动后位置 $d2$(代码设定移动了10个波长)。
* 计算等倾干涉的光程差 $Delta = 2d cos(i)$,其中入射角 $i$ 根据透镜焦距和屏幕半径推导得出($cos(i) approx f / sqrt{f^2 + r^2}$)。
* 并在同一窗口左右子图中分别绘制移动前后的同心圆条纹,便于观察条纹的扩散或收缩。
* 能够在控制台输出中心点的干涉级次,并精确计算出移动过程中“吞吐”的条纹数量,验证微小位移测量的原理。
5. 三维可视化辅助逻辑
这是一个独立的可视化工具函数,用于接收位置矩阵、厚度矩阵和光强矩阵,通过光照插值(shading interp)和特定视角设置,绘制出平滑的三维光强曲面,辅助理解等厚干涉的物理意义。