Bonjour à tous,

Je dois simuler le mouvement d'un pendule sous scilab. Pour cela le professeur nous a envoyé un programme que nous devons personnaliser... Voici le mien :

function c=F(t,Y)
global g l
c=[Y(2),-g/l.*sin(Y(1))];
funcprot(0)
endfunction
teta_init=45;
teta_init=teta_init/180*%pi;
dteta_init = 0;
g=9.81;
l=1;
t=0:0.1:10; //Si on diminue l'intervalle, le pendule oscille moins longtemps et plus le pas est grand plus la simulation est saccadée donc il y a moins d'images par seconde.

y=RKex4(F,0,10,[teta_init,dteta_init],100);
y=y';

//Preparation du graphe

f = gcf(); // on recupere le handle de la fenêtre graphique
f.pixmap = "on"; // on met la fenetre en mode double buffer
// Permet au programme de calculer sur une fenêtre virtuelle avant d'afficher le résultat.

//FIN Preparation du graphe


//i = 1;
//while i<=length(y)-1
//i = i+1;
n=length(y);
for i=1:n
clf(); // On efface l'image précédente - on évite le scintillement

xtitle('', 'm', 'm');
a = gca(); // On récupère l'objet graphique axes pour modifier les légendes
a.isoview = "on";
a.data_bounds = [-2 2 -2 2];
a.title.text = "Le pendule ";
a.title.font_size = 4;



xpoly([0 +l*sin(y(1,i))],[0 -l*cos(y(1,i))],"lines",0)

ep = gce(); // On récupère l'objet graphique double-pendule atwood
// pour modifier son aspect cosmétique
ep.thickness = 1;// épaisseur du fil
ep.foreground = 2;//couleur du fil (2=bleu)
plot([+l*sin(y(1,i))],[-l*cos(y(1,i))],'o','MarkSize',10,'MarkBackgr ound','r')
//'o' correspond à la forme de l'extrémité (on peut mettre 'x' pour mettre une croix au lieu d'une boule.)
//Marksize grossit l'extrémité du segment (le numéro d'après est la grosseur)
//MarkBackground colore le fond de l'extrémité du segment
xgrid(12)//Couleur de la grille
show_pixmap() // basculement de la pixmap a l'ecran
end
f.pixmap = "off"; // on remet la fen^etre en mode usuel


Où la fonction RKex4 correspond à (résolution via la méthode de Runge Kutta 4 de l'équa diff du pendule) :
function Y=RKex4(F,a,b,A,n)
h=(b-a)/n;
Y(1,: )=A;
t(1)=a;
for i=1:n
K1=h*F(t(i ),Y(i,: ));
K2=h*F(t(i )+h/2,Y(i,: )+(1/2)*K1);
K3=h*F(t(i )+h/2,Y(i,: )+(1/2)*K2);
K4=h*F(t(i )+h,Y(i,: )+K3);
Y(i+1,: )=Y(i,: )+(1/6)*(K1+2*K2+2*K3+K4);
t(i+1)=t(i)+h;
end
endfunction


Le problème est qu'il m'indique qu'il y a une erreur dans le xpoly : error21 index invalide et je ne comprends pas pourquoi.
Pourriez vous m'aider?
Merci d'avance