推荐《计算物理论文》word版.docx

上传人:b****3 文档编号:3422373 上传时间:2022-11-22 格式:DOCX 页数:12 大小:2.13MB
下载 相关 举报
推荐《计算物理论文》word版.docx_第1页
第1页 / 共12页
推荐《计算物理论文》word版.docx_第2页
第2页 / 共12页
推荐《计算物理论文》word版.docx_第3页
第3页 / 共12页
推荐《计算物理论文》word版.docx_第4页
第4页 / 共12页
推荐《计算物理论文》word版.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

推荐《计算物理论文》word版.docx

《推荐《计算物理论文》word版.docx》由会员分享,可在线阅读,更多相关《推荐《计算物理论文》word版.docx(12页珍藏版)》请在冰豆网上搜索。

推荐《计算物理论文》word版.docx

推荐《计算物理论文》word版

白光和单色光干涉、衍射光学实验的Matlab模拟

摘要

光学的几个重要实验都可分为单色光和白光用Matlab模拟,为了使模拟的图样更符合实际,颜色的处理和颜色与光强的结合就成为关键。

对于单色光的实验模拟,利用函数imread读取光谱图片,得到各个颜色对应的RGB值,将其与不同颜色光的波长对应起来。

用光强公式得出的光强值之后,与RGB三个分量值相乘,实现光强和颜色的结合;对于白光的实验模拟,采用RGB图像红、绿、蓝三原色的思想,光强公式分为三部分,公式中的波长分别使用红绿蓝光的波长,两部分都用image或imshow函数来显示RGB图像。

最后,使用Gui综合各个实验,使界面人性化。

关键词

单色光白光杨氏双缝干涉牛顿环干涉迈克尔逊干涉仪(等倾干涉)

圆孔夫琅禾费衍射夫琅禾费单缝衍射

引言

Matlab有着强大的图像处理与数值计算功能,用它模拟光学课程教学中的几个典型实验,不仅可以方便的呈现于实验观察到的图样相符的结果,而且可以摆脱仪器的限制,成本低,方便教学演示。

模拟时关键是颜色和光强如何同时呈现的问题,利用真彩色图像的RGB理论可以很好的解决单色光和白光的干涉衍射问题。

正文

一、光学原理

1、杨氏双缝干涉

设单缝光阑S到狭缝S1和S2距离相等,光屏离狭缝间距为z,假设S是单色光源,考察屏幕上一点P,从S1和S2发出的光在该点叠加产生合振动的强度为:

若实验装置中S1和S2狭缝宽度相等,有

,则

图一杨氏双缝干涉图二牛顿环干涉

2、牛顿环干涉

牛顿环干涉属于分振幅干涉,是一种通过分振幅获取相干光的的等厚干涉现象。

两相干反射光在某点P处叠加,合成光强I=4I0cos2(Δθ/2),I0表示两反射光的强度,Δθ=2πΔr/λ,Δr表示自空气间隙上下表面反射光的光程差,Δr=2t+2d+λ/2。

t是透镜底部与平板之间空气层的厚度,d=R-√R2-r2,R是透镜的半径,r是干涉条纹的半径。

3、迈克尔逊干涉仪(等倾干涉)

迈克尔逊干涉仪利用分振幅法产生双光束以实现干涉。

通过调整该干涉仪,可以产生等厚干涉条纹,也可以产生等倾干涉条纹。

对于等倾干涉条纹.根据光波的迭加原理可得出迈克尔逊干涉仪的等倾干涉的光强分布为:

I=I0cos2{2πdcos[arctan(r/f)]/λ},d为由分光板分束,经相互垂直的两平面反射镜反射的二相干光束的光程差的一半,相当于空气平行薄膜的厚度,f为屏幕前透镜的焦距,r2=x2+y2。

随着d的增加,干涉环从中心冒出,随着d的减小,干涉环向中心收缩。

图三迈克尔逊干涉仪图四圆孔夫琅禾费衍射

4、圆孔夫琅禾费衍射

夫琅和费衍射,是指衍射屏与接受屏之间的距离均为无限远的场合。

一束平行光自左边入射到圆孔衍射屏上,经中间的透镜后在右边的接受屏上形成衍射条纹。

利用菲涅尔-基尔霍夫积分公式得到接受屏上P点的光强I=I0(2J1(x)/x)2,I0是衍射场中心的强度,J1(x)为一阶贝塞尔函数,x=2πasinθ/λ,a是圆孔的半径,θ是衍射角。

5、夫琅禾费单缝衍射

光强

其中,

,a为单缝的宽度,θ为衍射角,I0=a2,沿不同衍射方向会有不同的光强。

二、RGB图像相关原理

本论文采用RGB图像。

RGB图像,即真彩图像,在MATLAB中存储为数据矩阵。

数组中的元素定义了图像中的每一个像素的红、绿、蓝颜色值,像素的颜色由保存在像素位置上的红、绿、蓝灰度值的组合确定。

任意像素点(r,c)颜色的显示由三数组(r,c,1:

3)决定。

每一像素的三个颜色值保存在数组的第三维中。

Matlab的RGB数组可以是双精度的浮点类型、8位或16位无符号的整数类型。

在RGB的双精度型的数组中,每一种颜色是用0到1之间的数值表示。

例如,颜色值为(0,0,0)时为黑色,(1,1,1)对应白色。

8位RGB图像的颜色数据是[0255]之间的整数,而不是[01]之间的浮点值,颜色值为(255,255,255)的像素显示为白色。

将unit8类型转换为double类型时,首先要除以255。

即:

RGB64=double(RGB8)/255。

在Matlab中可以调用image或imshow函数来显示RGB图像。

RGB是m*n*3的矩阵。

格式为image(RGB),imshow(RGB)。

在Matlab中用函数imread来读取图像文件,函数调用格式为:

A=imread(filename,fmt)。

大多数图像用8位或更少位颜色来存储像素点值,当把这些图像数据加载到内存中时,Matlab会根据不同的文件类型保存为不同数据类型。

三、核心代码(单色光)

单色光的各个实验的编程原理相似,不同的只是光强公式,以单色光的杨氏双缝干涉为例。

首先要解决颜色和光波波长一一对应的问题,使用真彩色的RGB理论,使用imread函数读入存在MATLAB默认路径中的光谱图“guangpu.bmp”,该产生一个三维数组,对应颜色的RGB值。

运行后可知该三维数组为26*444*3的,可以理解为三个页面依次保存各像素点的红、绿、蓝颜色值,每页上有26行444列,每个像素点的颜色为这三个值组合而成的。

同时,每页上的各行数值相同,因此只需要将每页的第一行提取出来使用。

光谱图(“guangpu.bmp”)

guangpu1=double(imread('guangpu.bmp'));

guangpu=[guangpu1(1,:

1);guangpu1(1,:

2);guangpu1(1,:

3)];

接下来就是将提取出的RGB值与波长对应起来,不妨设定光谱图波长范围[380780],结合round取整实现输入一个波长找出它在数组中的位置的效果,由于8位RGB图像的颜色数据是[0255]之间的整数,而不是[01]之间的浮点值,将其除以255,即可将其转换为[01]之间的浮点值,以利于接下来的画图。

yanse=guangpu(:

round(((lambda*1e6-380)/400*444)))/255;

然后设置屏幕宽度、屏幕到缝的距离的大小,编写有关相位差、光强的计算公式。

ym=1.25;%国际单位,米

y=linspace(-ym,ym,101);

z=1000;

L1=sqrt((y-1).^2+z^2);

L2=sqrt((y+1).^2+z^2);

phi=2*pi*(L2-L1)/lambda;

I=4.*(cos(phi/2)).^2;

最后,从yanse中提取出RGB的红、绿、蓝三个分量值,并通过光强I值与RGB分量值的乘积实现光强和颜色的结合。

用image或imshow函数画出干涉条纹。

zong(:

:

1)=I*yanse

(1);

zong(:

:

2)=I*yanse

(2);

zong(:

:

3)=I*yanse(3);

image(zong/4)

实验模拟的结果在GUI中显示,程序中将所有实验用到的参数统一起来,都呈现在面板上,但同时又设置模拟某个实验时只出现它对应的参数,用不到的参数不显示滑动条,方便用户知道每个实验对应的参数。

GUI使用时,先用滑动条把edittext调出数值,这样才运行处正确的结果。

接下来选择实验项目,设置参数,之后再点击一次实验项目,就可出现图样,参数选择得当才可得到漂亮的图样。

结果如下:

(1)、杨氏双缝干涉

(2)、牛顿环干涉

(3)、圆孔夫琅禾费衍射

(4)、夫琅禾费单缝衍射

(5)、迈克尔逊干涉仪(等倾干涉)。

可以看出随着空气薄膜厚度的增加,条纹从中心冒出。

四、核心代码(白光)

仍以白光杨氏双缝干涉为例。

由RGB真彩图理论:

白光可以分解为红、绿、蓝三基色,白光的干涉衍射条纹就可简化为红、绿、蓝条纹的叠加,Iw为代入imshow函数总的三维数组,红光的光强Ir作为其第三维的第一个,绿、蓝分别作为第二、三个,得到RGB图像的参数,再用image或imshow函数作图。

同时,不同波长代入光强公式,分别作为三维数组的第三维的元素,也就实现了颜色与光强的结合。

首先给定红、绿、蓝光的波长。

由等能白光对应三基色波长的情况可以把红、蓝、绿波长分别设为700nm、546.1nm、435.8nm。

lr=700e-6;%国际单位,米

lg=546.1e-6;

lb=435.8e-6;

接着给出参数及公式,光强公式分为三部分,公式中的波长分别使用红、绿、蓝光的波长,用一个零矩阵Iw储存三种光的颜色光强信息。

之后对Iw用RGB图像的显示方式:

image或imshow函数作图。

ym=0.5;

y=linspace(-ym,ym,2500);%屏幕宽度

z=1000;%屏幕到缝的距离

L1=sqrt((y-1).^2+z^2);

L2=sqrt((y+1).^2+z^2);

phir=2*pi*(L2-L1)/lr;%相位差

phig=2*pi*(L2-L1)/lg;

phib=2*pi*(L2-L1)/lb;

Ir=4.*(cos(phir/2)).^2;

Ig=4.*(cos(phig/2)).^2;

Ib=4.*(cos(phib/2)).^2;

Iw=zeros(400,2500,3);

Iw(:

:

1)=Ir;

Iw(:

:

2)=Ig;

Iw(:

:

3)=Ib;

imshow(Iw)

结果如下:

(1)、杨氏双缝干涉

(2)、牛顿环干涉

(3)、圆孔夫琅禾费衍射

(4)、夫琅禾费单缝衍射

(5)、迈克尔逊干涉仪(等倾干涉),随着空气薄膜厚度的增加,条纹向外冒出。

总结

一、优点

1、颜色的实现及与光强的结合

借助RGB理论,解决了颜色的问题,使图样是彩色的而非灰度的,更接近实际实验结果,在遵从科学性的同时也更利于教学演示。

对于单色光,通过对光谱图的读取并转化为RGB值,实现了波长与颜色的一一对应,让Matlab知道输入的波长值该对应什么颜色。

从而可以借助波长模拟各种单色光的光学实验,而不是仅限于Matlab自带的几种不好确定的颜色。

对于白光,借助RGB真彩图理论把白光分解为红、绿、蓝三基色,从而将白光的干涉衍射化为三种光的干涉衍射的叠加,将三个波长代入光强公式,分别作为包含RGB和光强信息的三维数组的第三维的元素,也就实现了颜色与光强的结合。

而不是仅以灰度表示出光强。

2、GUI的人性化

实验模拟的结果在GUI中显示,程序中将所有实验用到的参数统一起来,都呈现在面板上,但同时又设置模拟某个实验时只出现它对应的参数,用不到的参数不显示滑动条,方便用户知道每个实验对应的参数,同时给出参数的示例以便用户可以更快地调出漂亮的图样。

二、有待改进之处

1、GUI使用时的一个不方便之处,得先用滑动条把所有的edittext调出数值,给一个初始的数值,这样才接下来选择实验项目,运行出正确的结果。

不过,用户如果直接选择白光的实验项目,就不存在这个缺陷,可以直接选项目改参数。

可以考虑改进。

2、模拟出的图样虽然和实验结果大致符合,如果到边缘处就比较粗糙,与实验结果符合得不太好,可以考虑改进原理。

感悟(见另一个文档)

参考文献

【1】王家文《Matlab7.6图形图像处理》国防工业出版社

【2】张德丰等《Matlab图形与动画设计》国防工业出版社

【3】彭芳麟《计算物理基础》高等教育出版社

【4】叶玉堂等《光学教程》清华大学出版社

(本资料素材和资料部分来自网络,仅供参考。

请预览后才下载,期待您的好评与关注!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1