Question

Voici mon code:

x=0; 
for i=1:100
    x=x+sqrt(((1/((((2*i)-2)^2)*(((2*i)+2)^2)))*16)+8);
end

Pour une raison quelconque, je continue d'obtenir la valeur de l'infini (inf) pour x après cette opération ???

Quelqu'un peut-il aider à expliquer pourquoi?

Était-ce utile?

La solution

C'est parce que vous divisez par zéro à i==1 : Jeter un coup d'œil à (2*i)-2i==1.

Je peux seulement deviner que vous vouliez réellement utiliser i Comme la racine carrée imaginaire de -1. Dans ce cas, changez la boucle en:

x=0;
for k=1:100 x=x+sqrt(((1/((((2*i)-2)^2)*(((2*i)+2)^2)))*16)+8); end

Et en ce Cas La boucle n'est pas du tout nécessaire.

Autres conseils

Lorsque i est égal à 1 sur votre première itération, l'argument de SQRT est égal Inf (c'est-à-dire que vous obtenez un 1/0, mais votre avertissement de division par zéro est probablement désactivé).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top