2012-01-23 4 views
2

Вот мой код:значения Inf после приращения

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

По некоторым причинам я получаю значение бесконечности (РСМД) для й после этой операции ???

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

+1

Не используйте здесь 'i' в качестве переменной цикла, потому что неясно, имеете ли вы в виду переменную' i' или комплексное число 'sqrt (-1)'. Если вы имеете в виду комплексное число, то вместо этого вы должны использовать '1i'. – Nzbuu

ответ

1

Это потому, что вы делите на ноль на 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

Когда i равен 1 на вашей первой итерации, аргумент SQRT равен Inf (т.е. вы получаете 1/0, но ваш divide-by-zero warning вероятно выключен).