2017-10-12 9 views
1

Je m'excuse d'avance, je suis sûr que la réponse à cette question est assez triviale, malheureusement, je ne suis pas sûr de ce qui se passe.Matlab: Inequality in If instruction résulte en erreur

Je suis en train d'exécuter le code suivant

a(1) = -2; 
b(1) = 2; 
c(1) = 0; 


for i = 1:15 

    if cubicPoly(a(i))*cubicPoly(c(i)) < 0 
    a(i+1) = a(i); 
    b(i+1) = c(i); 

    else 
    a(i+1) = c(i); 
    b(i+1) = b(i); 

    end 

end 

mais quand je fais que je reçois le message d'erreur

Index exceeds matrix dimensions. 

Error in Assignment2 (line 31) 
if cubicPoly(a(i))*cubicPoly(c(i)) < 0 

Si j'évalue ma fonction polynomiale cubique cubicPoly normalement, tout fonctionne très bien. Mais à l'intérieur de la boucle for/if lorsqu'elle est évaluée sur les séquences a (i) et c (i), il en résulte une erreur.

Toute aide serait appréciée.

+0

Euh non, je ne le crois pas. Le code que vous voyez là est tout ce qu'il y a à part la fonction définie séparément. Idk peut-être que j'ai créé ma fonction de manière incorrecte ou quelque chose? Je suppose que je devrais peut-être poster mon code pour cubicPoly ... – FofX

Répondre

3

Il ne semble pas que vous ajoutiez plus d'éléments à c; Lorsque i = 2, vous essayez d'accéder à c(2) dans if cubicPoly(a(i))*cubicPoly(c(i)) < 0, ce qui vous prend hors limites.

Vous pouvez inclure quelque chose comme c(i+1) = ... si vous avez l'intention d'ajouter des éléments à c en boucle.

+1

Oui je pense que c'est ça. Je vous remercie. J'ai réalisé que j'ai besoin de c (i + 1) = (a (i) + b (i))/2. Je savais que j'allais me sentir bête après avoir découvert ce que je faisais de mal. – FofX