下面写的MATLAB程序怎么程序循环次数一直是0? 条件有问题吗?
答案:1 悬赏:60 手机版
解决时间 2021-02-19 05:09
- 提问者网友:听门外雪花风
- 2021-02-18 16:02
下面写的MATLAB程序怎么程序循环次数一直是0? 条件有问题吗?
最佳答案
- 五星知识达人网友:大漠
- 2021-02-18 17:23
可这样改:
clear
c=1.195;a=0.79;g=0.78;
x=0;y=0;z=0;
w=1;
m=0;
%u=[];v=[];
%w=[];
o=0;p=0;q=0;o1=0;p1=0;q1=0;
for t=1:1000
%for b=1:100
%b=(z<=3 & w>0.000001)
while (z<=3&&w>0.000001)
i1=unifrnd(0,1);j=unifrnd(0,2*pi);i2=unifrnd(0,1);
l=-log(i1(1))/c;%自由步长
k=acos(1/(2*g)*(1+g^2-((1-g^2)/(1-g+2*g*i2(1)))^2));
x=x+l*sin(k)*cos(j(1));
y=y+l*sin(k)*sin(j(1));
z=z+l*cos(k);
w=w*(1-a/c);
m=m+1;
end
if (z>= 3 && w>0.000001)
if x^2+y^2<=0.01
o=o+1;
elseif (x-0.2)^2+y^2<=0.01
p=p+1;
elseif x^2+(y-0.2)^2<=0.01
q=q+1;
elseif (x+0.2)^2+y^2<=0.01
o1=o1+1;
elseif x^2+(y+0.2)^2<=0.01
p1=p1+1;
else
q1=q1+1;
end
end
end
u=[0,0.2 0 -0.2 0];v=[0 0 0.2 0 -0.2];w=[o p q o1 p1];
scatter3(u,v,w,5,'filled');
%axis([-30 30 -30 30 -0.01 0.1]);
xlabel('x');
ylabel('y');
zlabel('z');
title('光子分布图')
%view([x,y,z])
clear
c=1.195;a=0.79;g=0.78;
x=0;y=0;z=0;
w=1;
m=0;
%u=[];v=[];
%w=[];
o=0;p=0;q=0;o1=0;p1=0;q1=0;
for t=1:1000
%for b=1:100
%b=(z<=3 & w>0.000001)
while (z<=3&&w>0.000001)
i1=unifrnd(0,1);j=unifrnd(0,2*pi);i2=unifrnd(0,1);
l=-log(i1(1))/c;%自由步长
k=acos(1/(2*g)*(1+g^2-((1-g^2)/(1-g+2*g*i2(1)))^2));
x=x+l*sin(k)*cos(j(1));
y=y+l*sin(k)*sin(j(1));
z=z+l*cos(k);
w=w*(1-a/c);
m=m+1;
end
if (z>= 3 && w>0.000001)
if x^2+y^2<=0.01
o=o+1;
elseif (x-0.2)^2+y^2<=0.01
p=p+1;
elseif x^2+(y-0.2)^2<=0.01
q=q+1;
elseif (x+0.2)^2+y^2<=0.01
o1=o1+1;
elseif x^2+(y+0.2)^2<=0.01
p1=p1+1;
else
q1=q1+1;
end
end
end
u=[0,0.2 0 -0.2 0];v=[0 0 0.2 0 -0.2];w=[o p q o1 p1];
scatter3(u,v,w,5,'filled');
%axis([-30 30 -30 30 -0.01 0.1]);
xlabel('x');
ylabel('y');
zlabel('z');
title('光子分布图')
%view([x,y,z])
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |