如果我像这样绘制窦
x=0:0.05:2*pi;
y=sin(x);
plot(x,y,'.-')
我的点密度明显不均匀。请参阅附件。sin
我想要的是,这些点应该彼此相等。所以,我需要以某种方式定义x数组..还是有另一种方式?
答案 0 :(得分:5)
x
中的点密度是均匀的。如果您希望y
中的点是统一的,则可以使用:
y=-1:.05:1;
plot(asin(y),y,'o')
但是x
中的点数并不统一。
编辑:为了娱乐或为了将来的读者,为了在整个距离内获得均匀的点,点之间的距离为d=sqrt(h^2+(f(x+h)-f(x))^2)
,大约为d=h*sqrt(1+f'(x)^2)
,即h=d/sqrt(1+cos(x)^2)
在这种情况下。曲线长度是sqrt(1+f'(x)^2)
的积分,在本例中为4*sqrt(2)*ellipticE(1/2) = 7.6404
:
N = 100;
d = 7.6404/N;
x = zeros(1,N);
for n = 2:N
x(n) = x(n-1) + d/sqrt(1+cos(x(n-1))^2);
end
y = sin(x);
plot(x,y,'x')
通过查看sqrt(diff(y).^2+diff(x).^2)
,您可以检查点之间的距离是近似恒定的。它只是近似的,因为距离使用了导数(在间隔的左端点处),但随着N
的增加,这会变得更好。为了获得精确的距离,我们需要在数值上求解每个点的trig方程。曲线长度也受近似值的影响,并且往往会错过最后一点。