2016-05-18 31 views
0

如何在0和4 * pi之间获得曲线长度下面的值?你应该使用的命令是inttrap和diff。这里是我现在有:使用inttrap和diff获得Scilab中曲线的长度

t=linspace(0,4*%pi) 
x=(4+sin(a*t)).*cos(3*t) 
y=(4+sin(a*t)).*sin(3*t) 
z=cos(3*t) 

xx=diff(x) 
yy=diff(y) 
zz=diff(z) 
aid=sqrt(xx^2+yy^2+zz^2) 
length=inttrap([t],aid) 

获取错误消息,最后一步是不正确的。

回答

0

错误消息的原因是taid有不同的大小。那是因为diff返回一个向量比输入少1个条目。你可以看到它是如何工作的例子:diff([3 1 5])[-2 4]

若要解决此问题,请使用t(1:$-1),它省略了最后一个条目t。也就是说,

len = inttrap(t(1:$-1), aid) 

(请不要使用length,这是在Scilab的函数名称。)

你有另一个问题是,diff仅仅是差异,而不是一个衍生物。要得到衍生物,你需要除以步长,在你的情况下是t(2)-t(1)

此外,语法xx^2已弃用元件功率;请使用xx.^2代替

t = linspace(0,4*%pi) 
a = 1 
x = (4+sin(a*t)).*cos(3*t) 
y = (4+sin(a*t)).*sin(3*t) 
z = cos(3*t) 

step = t(2)-t(1) 
xx = diff(x)/step 
xy = diff(y)/step 
xz = diff(z)/step 
aid = sqrt(xx.^2+yy.^2+zz.^2) 
len = inttrap(t(1:$-1), aid) 
+0

谢谢。你的答案是以一种很好,简单的方式写成的。它帮助我。 – IsaacNuketon