Значение Inf после увеличения - PullRequest
2 голосов
/ 23 января 2012

Вот мой код:

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

Почему-то я продолжаю получать значение бесконечности (inf) для x после этой операции ???

Может кто-нибудь помочь объяснить, почему?

Ответы [ 2 ]

1 голос
/ 23 января 2012

Это потому, что вы делите на ноль в i==1: посмотрите на (2*i)-2, где i==1.

Я могу только догадываться, что вы действительно хотели использовать i в качестве мнимого квадратного корня из -1. В этом случае измените цикл на:

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

А в в этом случае цикл вообще не нужен.

0 голосов
/ 23 января 2012

Когда i равно 1 на первой итерации, аргумент SQRT равен Inf (то есть вы получаете 1/0, но предупреждение деление на ноль , вероятно, отключено) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...