基于matlab的圆孔衍射模拟程序就是要模拟出I和S的图,I的表达式如图程序应该没有语法错误,但是运行以后没有反应,图也没有跳出来.不知道是什么原因.lmda=500e-9;a=1e-3;f=1;w=0.42;w0=0.3;xm=2000*lmda*f;[
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/11 17:16:54
基于matlab的圆孔衍射模拟程序就是要模拟出I和S的图,I的表达式如图程序应该没有语法错误,但是运行以后没有反应,图也没有跳出来.不知道是什么原因.lmda=500e-9;a=1e-3;f=1;w=0.42;w0=0.3;xm=2000*lmda*f;[
基于matlab的圆孔衍射模拟程序
就是要模拟出I和S的图,I的表达式如图
程序应该没有语法错误,但是运行以后没有反应,图也没有跳出来.
不知道是什么原因.
lmda=500e-9;
a=1e-3;
f=1;
w=0.42;
w0=0.3;
xm=2000*lmda*f;
[x,y]=meshgrid(-xm:1e-6:xm);
s=2*pi*a*sqrt(x.^2+y.^2)./(lmda*f);
syms n;
I=(symsum(((a.^2)./(w*w0)).^(n-1).*(2.^n)./(s.^n).*besselj(n,s).*exp(-(a.^2)./(w.^2)),1,inf)).^2;
figure
plot(-s,I,s,I)
xlabel('s 单位:m');
ylabel('光强I 单位:cd');
基于matlab的圆孔衍射模拟程序就是要模拟出I和S的图,I的表达式如图程序应该没有语法错误,但是运行以后没有反应,图也没有跳出来.不知道是什么原因.lmda=500e-9;a=1e-3;f=1;w=0.42;w0=0.3;xm=2000*lmda*f;[
符号计算非常慢,你要耐心等待,命令窗种的输入提示符>>没出现,程序就是还在运行,要等等
还有数值计算一般需要计算到一定级次截止,后面的不再计算了,一般计算到6-10级就可以了,级次再增加,差别也不大
还有就是你如果不关心数值结果,值想画个图出来的画,把步长也可以弄大些.
我看你程序有inf,我运行了下,运行到一定时间提示out of memory,溢出了
还是不要用符号了,直接数值吧,快
lmda=500e-9;
a=1e-3;
f=1;
w=0.42;
w0=0.3;
xm=2000*lmda*f;
[x,y]=meshgrid(-xm:1e-6:xm);
s=2*pi*a*sqrt(x.^2+y.^2)./(lmda*f);
I=0;
for n=1:10
Itemp=( ((a.^2)./(w*w0)).^(n-1).*(2.^n)./(s.^n).*besselj(n,s).*exp(-(a.^2)./(w.^2)) ).^2;I=I+Itemp;
end
figure
plot(-s,I,s,I)
xlabel('s 单位:m');
ylabel('光强I 单位:cd');
这样就出结果了