基于matlab的圆孔衍射模拟程序就是要模拟出I和S的图,I的表达式如图程序应该没有语法错误,但是运行以后没有反应,图也没有跳出来.不知道是什么原因.lmda=500e-9;a=1e-3;f=1;w=0.42;w0=0.3;xm=2000*lmda*f;[
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/08 19:16:00
![基于matlab的圆孔衍射模拟程序就是要模拟出I和S的图,I的表达式如图程序应该没有语法错误,但是运行以后没有反应,图也没有跳出来.不知道是什么原因.lmda=500e-9;a=1e-3;f=1;w=0.42;w0=0.3;xm=2000*lmda*f;[](/uploads/image/z/13753680-24-0.jpg?t=%E5%9F%BA%E4%BA%8Ematlab%E7%9A%84%E5%9C%86%E5%AD%94%E8%A1%8D%E5%B0%84%E6%A8%A1%E6%8B%9F%E7%A8%8B%E5%BA%8F%E5%B0%B1%E6%98%AF%E8%A6%81%E6%A8%A1%E6%8B%9F%E5%87%BAI%E5%92%8CS%E7%9A%84%E5%9B%BE%2CI%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%A6%82%E5%9B%BE%E7%A8%8B%E5%BA%8F%E5%BA%94%E8%AF%A5%E6%B2%A1%E6%9C%89%E8%AF%AD%E6%B3%95%E9%94%99%E8%AF%AF%2C%E4%BD%86%E6%98%AF%E8%BF%90%E8%A1%8C%E4%BB%A5%E5%90%8E%E6%B2%A1%E6%9C%89%E5%8F%8D%E5%BA%94%2C%E5%9B%BE%E4%B9%9F%E6%B2%A1%E6%9C%89%E8%B7%B3%E5%87%BA%E6%9D%A5.%E4%B8%8D%E7%9F%A5%E9%81%93%E6%98%AF%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0.lmda%3D500e-9%3Ba%3D1e-3%3Bf%3D1%3Bw%3D0.42%3Bw0%3D0.3%3Bxm%3D2000%2Almda%2Af%3B%5B)
基于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');
这样就出结果了