• ベストアンサー

Sn=1/nの数列和

プログラムでこの数列の和を求めるときに右から計算するときと左から計算するのでは結果が違うのですか?そんな話を聞いたので.それはなぜですか?そもそも趣味でやる程度のプログラミングでは意識する必要があるのでしょうか・・・?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

実際に確認してみました。(VC++6) n = 10000000000 1/1 + 1/2 + ... + 1/(n-1) + 1/n = 21.64411759417110700000 1/n + 1/(n-1) + ... + 1/2 + 1/1 = 21.64411759416666200000 この誤差を意識する必要があるかどうかは、作ろうとするプログラムによります。 しかし、計算の仕方によっては無視できないほどの誤差が生じることも有ります。 一度、誤差について調べてみると良いでしょう。 一般的な誤差については、その影響を小さくする方法も知られています。

Banana451
質問者

お礼

回答ありがとうございます.わざわざ確認まで・・・.申し訳ないです.

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

コンピュータでは、有限の桁数しか保持できません。 浮動小数点方式で大きな数から小さな数まで表現できても、保持できる有効桁は、同じなので、 大きい数字に小さい数字を足そうとしたりした場合、 小さい数字の桁を保持する桁が無い場合(捨てられてしまう)があります。 趣味でやるかどうかはともかく、 コンピュータで計算をさせる場合は、そうした保持できる桁数について考慮する必要があります。

Banana451
質問者

お礼

回答ありがとうございます.

回答No.1

誤差の積もりかたが違うってことでしょうね。

関連するQ&A