Valeur info après incrémentation
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?
La solution
C'est parce que vous divisez par zéro à i==1
: Jeter un coup d'œil à (2*i)-2
où i==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