これが私のコードです:
x=0;
for i=1:100
x=x+sqrt(((1/((((2*i)-2)^2)*(((2*i)+2)^2)))*16)+8);
end
何らかの理由で、この操作の後、x の無限値 (inf) を取得し続けますか???
誰かが理由を説明できますか?
これは、 at で 0 で除算するためです。 wherei==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
その場合、ループはまったく必要ありません。
i
最初の反復で が 1 に等しい場合、SQRT への引数は等しくなりますInf
(つまり1/0
、 が得られますが、ゼロ除算の警告はおそらくオフになっています)。