2

これが私のコードです:

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

何らかの理由で、この操作の後、x の無限値 (inf) を取得し続けますか???

誰かが理由を説明できますか?

4

2 に答える 2

1

これは、 at で 0 で除算するためです。 wherei==1を見てください。(2*i)-2i==1

iの虚数平方根として実際に使用するつもりだったと推測できます-1。その場合、ループを次のように変更します。

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

その場合、ループはまったく必要ありません。

于 2012-01-23T17:40:41.567 に答える
0

i最初の反復で が 1 に等しい場合、SQRT への引数は等しくなりますInf(つまり1/0、 が得られますが、ゼロ除算の警告はおそらくオフになっています)。

于 2012-01-23T17:41:27.020 に答える