La raison du message d'erreur est que t
et aid
ont des tailles différentes. Et c'est parce que diff
renvoie un vecteur avec 1 entrée de moins que l'entrée. Vous pouvez voir comment cela fonctionne sur un exemple: diff([3 1 5])
est [-2 4]
.
Pour corriger cela, utilisez t(1:$-1)
, qui omet la dernière entrée de t
. C'est,
len = inttrap(t(1:$-1), aid)
(S'il vous plaît ne pas utiliser length
, qui est un nom de fonction dans Scilab.)
Un autre problème que vous avez est que diff
est seulement des différences, pas un dérivé. Pour obtenir la dérivée, vous devez diviser par la taille du pas, qui dans votre cas est t(2)-t(1)
.
De même, la syntaxe xx^2
est obsolète pour la puissance élémentaire; utiliser xx.^2
à la place
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)
Merci. Votre réponse est écrite d'une manière simple et efficace. Cela m'a aidé. – IsaacNuketon