Inscription / Connexion Nouveau Sujet
Niveau LicenceMaths 2e/3e a
Partager :

index invalide scilab

Posté par
jessica45
11-05-19 à 10:44

Bonjour ,
Pour un projet je dois faire un programme Scilab voici ce que j'ai fais:

function cuves(T,N,Re1,Re2,D,C1,C2,C3,C4,E12,E21,U11,U12,U21,U22,R1,R2)
    h=T/N
    U11(1)=U11
    U12(1)=U12
    U21(1)=U21
    U22(1)=U22
    R1(1)=R1
    R2(1)=R2
    for i=1:N
        R1(i+1)=R1(i)+h*(D*(Re1-R1(i))-C1*R1(i)*U11(i)-C2*R1(i)*U21(i)-E12*R1(i)+E21*R2(i));
        U11(i+1)=U11(i)+h*((-1)*D*U11(i)+C1*R1(i)*U11(i)-E12*U11(i)+E21*U12(i));
        U21(i+1)=U21(i)+h*((-1)*D*U21(i)+C2*R1(i)*U21(i)-E12*U21(i)+E21*U22(i));
        R2(i+1)=R2(i)+h*(D*(Re2-R2(i))-C3*R2(i)*U12(i)-C4*R1(i)*U22(i)+E12*R1(i)-E21*R2(i));
        U12(i+1)=U12(i)+h*((-1)*D*U12(i)+C3*R2(i)*U12(i)+E12*U11(i)-E21*U12(i));
        U21(i+1)=U22(i)+h*((-1)*D*U22(i)+C4*R2(i)*U22(i)+E12*U21(i)-E21*U22(i));
         end
            x=[1:N+1]'
            plot2d([x,x,x,x,x,x],[R1,R2,U11,U21,U12,U22])
endfunction

or quand je veux le faire fonctionner il me dit "error 21 index invalide "
est ce que quelqu'un peux m'aider à trouver mon erreur?

merci d'avance pour votre aide

Posté par
sanantonio312
re : index invalide scilab 11-05-19 à 13:57

Bonjour,
Quelle est la dimension déclarée des tableaux U11, U12, U21 et U22
Là, tu adresses l'indice N+1

Posté par
jessica45
re : index invalide scilab 11-05-19 à 16:27

Pour moi U11, U21,U12 et U22 prennent N+1 valeur donc un tableau de dimension N+1
auparavant j'avais fait un programme de même type avec moins de variable et il fonctionnait …  

Posté par
sanantonio312
re : index invalide scilab 12-05-19 à 19:02

Je ne connais pas Scilab, mais pour N+1 valeurs, de nombreux logiciels prennent les indices de 0 à N. LE N+1ème est alors hors limite.

Posté par
jessica45
re : index invalide scilab 12-05-19 à 22:55

je ne crois pas que  ça soit le cas pour Scilab
Voici le programme précédent qui fonctionne parfaitement:

function[U1,U2,R1]=deux(T,N,D,Re,X10,X20,Y0,C1,C2)
    h=T/N
    U1(1)=X10
    U2(1)=X20
    R1(1)=Y0
    for i=1:N
        R1(i+1)=R1(i)+h*(D*(Re-R1(i))-C1*R1(i)*U1(i)-C2*R1(i)*U2(i));
        U1(i+1)=U1(i)+h*((-1)*D*U1(i)+C1*R1(i)*U1(i));
        U2(i+1)=U2(i)+h*((-1)*D*U2(i)+C2*R1(i)*U2(i));
    end
            x=[1:N+1]'
            plot2d([x,x,x],[U1,U2,R1],leg='Population 1@Population 2@Ressource')
endfunction

deux(100,10000,1,3,1,5,1,5,2);

merci pour vos réponses

Posté par
sanantonio312
re : index invalide scilab 13-05-19 à 11:59

Comme je te l'ai déjà dit, je ne connais Scilab.
Mais, dans le "pavé" d'affectations:

Citation :
        R1(i+1)=R1(i)+h*(D*(Re1-R1(i))-C1*R1(i)*U11(i)-C2*R1(i)*U21(i)-E12*R1(i)+E21*R2(i));
        U11(i+1)=U11(i)+h*((-1)*D*U11(i)+C1*R1(i)*U11(i)-E12*U11(i)+E21*U12(i));
        U21(i+1)=U21(i)+h*((-1)*D*U21(i)+C2*R1(i)*U21(i)-E12*U21(i)+E21*U22(i));
        R2(i+1)=R2(i)+h*(D*(Re2-R2(i))-C3*R2(i)*U12(i)-C4*R1(i)*U22(i)+E12*R1(i)-E21*R2(i));
        U12(i+1)=U12(i)+h*((-1)*D*U12(i)+C3*R2(i)*U12(i)+E12*U11(i)-E21*U12(i));
        U21(i+1)=U22(i)+h*((-1)*D*U22(i)+C4*R2(i)*U22(i)+E12*U21(i)-E21*U22(i));

C'est pas plutôt 22 au lieu du 21 rouge?
Du coup, les u22(i) n'existent pas...

Posté par
jessica45
re : index invalide scilab 13-05-19 à 13:51

en effet, je me suis bien trompée sans le voir même en ayant vérifié plusieurs fois
merci beaucoup pour vos réponses pour une petite fautes comme ça.

Posté par
sanantonio312
re : index invalide scilab 13-05-19 à 18:12

Si c'était la solution, c'est



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !