大虾帮忙看下我的半个圆怎么没有了?
我写的一个程序,想质点绕半圆后再沿直线运动,但是不知道为什么右边的半圆怎么没有了?!应该怎么改进啊?请高手帮忙看下,谢谢!clear;clc;
n=5;l=100;%变量声明
r=l/(2*(n-1));
y=-r:pi/500:50;%分段函数
x=0:pi/500:30;
len=length(y);
for i=1:len
if (y(i)<0)
y(i)=-(sqrt(r^2-(x(i)-r)^2));
elseif (y(i)>=0)
x(i)=2*r;
end
end
comet(x,y);
plot(x,y);
axis equal;
grid for i=1:len
if (y(i)<r)
y(i)=-(sqrt(r^2-(x(i)-r)^2));
elseif (y(i)>=r)
x(i)=2*r;
end
end
回复 沙发 wwbeyond 的帖子
刚去睡了一会~~~~~真是太感谢了~~~:@)
我又看了一下,但是不明白为什么改成r就可以了?我想的是y值<0的时候就是一个完整的半圆啊~~~还请高手指点一下哈:@)
[ 本帖最后由 ChaChing 于 2009-6-3 12:48 编辑 ] 改成r後, y<0的确是一个完整的半圆! 因为从你的程序和数据来看,圆的方程为
(x-r)^2+y^2=r^2
你一开始赋值y=-r:pi/500:50; x=0:pi/500:30; 此时的x与y不等长,你后面的程序要重新赋值,
而当x=0:pi/500:2*r时y对应的数据是y=-r:pi/500:r,所以应该用y(i)<r,不知说明白了没有。
实际上你的程序还可以改写为
n = 5;
l = 100;%变量声明
r = l/(2*(n-1));
t = linspace(-pi,0,2000);
y0=linspace(0,50,500);
x = ;
y = ;
comet(x,y);
plot(x,y);
grid
axis equal;
回复 5楼 xiezhh 的帖子
是的哈~~~:@D你的比我的简单多了,真是高手啊!领教了!非常感谢!
其实也可以只把步长改下,y=-r:pi/1000:50; x=0:pi/500:30;也能得到结果了。
也谢谢以上各位~:loveliness:
页:
[1]