2015-11-14 5 views
0

J'utilise le code suivant:erreur "index non valide" dans Scilab

for t = linspace(0,2,500) 

    x(t) = 1+ t^2; 
    y(t) = 2*t; 
    r(t) = sqrt((x(t))^2+(y(t))^2); 

    radius = 1.6 

    if r(t) > 0.999*radius & r(t) < 1.001*radius then 
     solucion = t; 

    end 
end; 

disp(solucion, "the solution is:") 

Ce qui fonctionne très bien avec t> 1 et différentes valeurs de rayon.

Mais je reçois error 21: Invalid index quand t prend des valeurs comprises entre 0 et 1.

Je dois travailler avec ces valeurs. Comment puis-je gérer cela?

+0

Si cela fonctionne comme MATLAB, vous pouvez uniquement indexer des éléments avec des entiers positifs. Utilisez un tableau (par exemple '0: 0.01: 1') et accédez avec votre variable de boucle, qui sont des entiers – Adriaan

Répondre

1

Juste pour que cela apparaît comme une réponse à la vue d'ensemble:

indices Array dans Scilab et Matlab doivent être des nombres entiers positifs (ou Logicals, mais qui est certainement pas ce que vous voulez ici). Si vous avez besoin de votre t pour varier sur une plage commençant à 0, écrivez toujours x(t+1). Si vous avez besoin de valeurs non entières, continuez de parcourir les entiers et calculez les valeurs non-entières à partir de l'index de boucle.

+0

Je ne sais pas" 0 "n'est pas un index valide :) –