fprintf('正方形面(平行于xoy)的均分');
f=input('请输入x/y的起点');
h=input('请输入x/y的终点');
n=input('请输入份数n=');
c=((h-f).*(h-f))/n;%%计算每一份的面积
m=1/((sqrt(c)/2)/(h-f))+1;%%计算步长个数
x=linspace(f,h,m);%%确定x的区间
y=linspace(f,h,m);%%确定y的区间
j=2:2*n;
posX=zeros(n+2,1);
posY=zeros(n+2,1);
posX(1)=x(1);
posY(1)=y(1);
for i=2:m
for k=2:m
dx=x(i)-x(1);
dy=y(k)-y(1);
b=dy-2.*dx;
if b==0 %%让x往后移动一下
i=i+1;
dx=x(i)-x(1);
end
if dx==0 %%防止y往下跑的时候dx=0,忽略应有的点
dx=dy;
end
d=dx.*dy;
a=abs(c-d);%%取绝对值
q=c/10;%%误差
if a<q %%求得的点
fprintf('%f,%f\n',x(i),y(k));
x(1)=x(i);
y(1)=y(k);
posX(j)=x(i);
posY(j)=y(k);
j=j+1;
end
if y(k)==h %%让y回归初始值
y(1)=f;
end
posX(end)=x(end);
posY(end)=y(end);
end
end
figure;
plot(posX,posY,'r.','MarkerSize',10);
axis equal;
xlabel('x');
ylabel('y');
legend({'均分点'})
fprintf('正方形面(平行于xoy)的均分');
f=input('请输入x/y的起点');
h=input('请输入x/y的终点');
n=input('请输入份数n=');
c=((h-f).*(h-f))/n; %%计算每一份的面积
m=1/((sqrt(c)/2)/(h-f))+1; %%计算步长个数
posX=zeros(n+2,1);
posY=zeros(n+2,1);
posX(1)=f;
posY(1)=f;
for i=2:n+1
posX(i) = f + (i-1)*(h-f)/n;
posY(i) = f + (i-1)*(h-f)/n;
end
posX(n+2)=h;
posY(n+2)=h;
disp([posX posY]);
上述代码首先输入起点f,终点h和份数n。然后计算每一份的面积c和步长个数m。接下来,创建两个长度为n+2的零向量存储均分后的矩形的横纵坐标。通过循环计算每个均分点的坐标,然后将其存入对应的向量中。最后,输出均分点的横纵坐标。
这段代码利用了linspace函数和循环来计算均分点的坐标,实现了矩形面积均分的功能。
报错