登录论坛

查看完整版本 : [MATLAB数学相关] 长度计算求助


zuiai996
2010-03-14, 13:55
。.C:\Documents and Settings\Administrator\桌面.sshot-3.pngq=0;r=0.2;e=0.4;
t=0;
w1=2;w2=1;
s=0;
x=zeros(1,5000);
x(1)=r*cos(q)+e;
y=zeros(1,5000);
y(1)=0;
for i=1:5000
t=t+pi/500;
x(i+1)=r*cos(q+w2*t-w1*t)+e*cos(w1*t);
y(i+1)=r*sin(q+w2*t-w1*t)+e*sin(w1*t);
if (x(i)^2+y(i)^2)^0.5>0.3
s=s+((x(i+1)-x(i))^2+(y(i+1)-y(i))^2)^0.5;
else
s=s+0;
end
s
这段程序的目的是求一段长度,不过这个长度要先经过比较,这个点的距离与圆心(即原点)的距离>0.3的才加入到总长度中,不足0.3的舍去
就是求在0.3的圆外的距离的长度,请大家看看我哪里错了,谢谢大侠,谢谢!

mathjiang
2010-03-16, 21:32
把错误信息贴出来。
似乎少了一个 end.

mathjiang
2010-03-16, 21:36
可以运行了(删除了几个多余的语句):
q=0; r=0.2; e=0.4; t=0;
w1=2; w2=1; s=0;
x=zeros(1,5000);
x(1)=r*cos(q)+e;
y=zeros(1,5000);
for i=1:5000-1
t=t+pi/500;
x(i+1)=r*cos(q+w2*t-w1*t)+e*cos(w1*t);
y(i+1)=r*sin(q+w2*t-w1*t)+e*sin(w1*t);
if (x(i)^2+y(i)^2)^0.5>0.3
s=s+((x(i+1)-x(i))^2+(y(i+1)-y(i))^2)^0.5;
end
end
s