|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
) E$ c3 q3 U, M" T3 w/ g& u+ eMATLAB源程序代码分享:杨氏双孔干涉实验的MATLAB计算模拟2 {$ S7 J: G6 S
%% 定义实验的参数. S! F# ^# i& z" M. ]
clear;clc;close all$ X' ], T% |+ h+ H ^! X# b& T3 L1 n; h
lambda=3000e-9; % 光的波长7 b. q5 l% H( F
d=7e-5; % 双孔的距离
2 ^- l( t- x3 r: w ~- M* XD=1.2; % 屏幕距双孔的距离/ u9 G" U$ L/ C6 S
1 N+ _ i0 ~7 p: d
%% 定义观察屏幕的范围, 并计算各个观测点的坐标值
, [+ @9 j9 _- p! c! y' Mxa=-2; % 最小的横坐标值
0 x" y6 H! [& c' l+ ^% y6 R! vxb=2; % 最大的横坐标值! H5 ]% R- f8 C I! e9 @. F
ya=-0.5; % 最小的纵坐标值
) H5 }$ g: v$ G$ _1 r# p: byb=0.5; % 最大的纵坐标值3 W1 J8 j4 r7 |3 v. A& i
n1=1000; % x 方向等分份数
$ F! X7 v" q# M6 y; nn2=1000; % y 方向等分份数- N! z) w0 n1 _$ E. u% u- s" ?; V
: u2 i$ B, i' L5 G
x=linspace(xa,xb,n1); % x 坐标7 m5 A! M# j' e& @
y=linspace(ya,yb,n2); % y 坐标! s1 ]6 u' K1 E! b; L& T
[xx,yy]=meshgrid(x,y); % 网格化处理, 得到观测点的坐标值
7 v6 i5 }4 f$ a/ b# a/ f) P- N* j# I( n; o, z$ E, ?
%% 计算各个观测点处的光强
' ~) `1 O6 X* `0 b; \k=2*pi/lambda; % 计算波数
& {% |4 ^* O6 ]* Qr1=sqrt((xx-d/2).^2+yy.^2+D^2); % 观测点到孔 1 的距离
- P$ ^+ Z6 f8 U' [1 A ~r2=sqrt((xx+d/2).^2+yy.^2+D^2); % 观测点到孔 2 的距离! v; }7 D4 z$ I/ V' W6 Y: l$ R# M4 n, ^
I=(cos(k*r1)./r1+cos(k*r2)./r2).^2+(sin(k*r1)./r1+sin(k*r2)./r2).^2; % 计算观测点处的光强! h5 i( z7 [1 i' X+ G
I=I/(max(max(I))); % 归一化处理
1 r9 g+ b7 o1 p* M, d& e4 U7 S; p* o& y
%% 绘制杨氏双孔干涉条纹
5 L' t7 ]3 w# O1 O' G3 S/ M7 e/ e" I5 Vfigure& q3 I2 `2 a& ~7 k, }; T, r( j6 x% {
set(gcf,'units','normalized','position',[0.2 0.2 0.6 0.6]); % 设置 figure 窗口的位置和尺寸
% L |. F( w2 O5 K8 J* Vsubplot(2,1,1) O7 h' r) P5 V# q
image([xa xb],[ya yb],I*255) % 显示条纹在屏幕上的二维图像
. O" b( m% r9 Q1 f8 Wcolormap(gray(255)) % 图像显示为黑白, 图像的灰度值为 255 级0 N i1 g( j5 T" E, [' Z
axis equal
W) S$ h* X' v2 paxis([xa xb ya yb]): O4 B/ y( {) [) i
xlabel('x (m)')
- C2 K+ A* j% u8 u9 h t- V0 E( q* wylabel('y (m)')
; Y$ p0 O. J( v0 D B/ Ytitle('杨氏双孔干涉条纹')
- z- W4 c6 ~ y, N
% r$ S0 w- `" ~; f6 n9 X%% 绘制光强分布的三维图
4 E0 p* p% H9 @' ]0 z' Rsubplot(2,1,2)0 T+ s5 _. u6 U/ N. D7 G
mesh(xx,yy,I)
% P1 E+ P2 @' Lxlabel('x (m)')% s! c$ U/ e2 E: ~* x# e. D# e. G2 g
ylabel('y (m)')/ g/ Z- U; h- s9 b2 n
zlabel('光强')3 y; O- _& {' `! s. X* z
title('光强分布') |
|