- ベストアンサー
Sn=1/nの数列和
プログラムでこの数列の和を求めるときに右から計算するときと左から計算するのでは結果が違うのですか?そんな話を聞いたので.それはなぜですか?そもそも趣味でやる程度のプログラミングでは意識する必要があるのでしょうか・・・?
- みんなの回答 (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 この誤差を意識する必要があるかどうかは、作ろうとするプログラムによります。 しかし、計算の仕方によっては無視できないほどの誤差が生じることも有ります。 一度、誤差について調べてみると良いでしょう。 一般的な誤差については、その影響を小さくする方法も知られています。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.2
コンピュータでは、有限の桁数しか保持できません。 浮動小数点方式で大きな数から小さな数まで表現できても、保持できる有効桁は、同じなので、 大きい数字に小さい数字を足そうとしたりした場合、 小さい数字の桁を保持する桁が無い場合(捨てられてしまう)があります。 趣味でやるかどうかはともかく、 コンピュータで計算をさせる場合は、そうした保持できる桁数について考慮する必要があります。
質問者
お礼
回答ありがとうございます.
- episteme_at_goo
- ベストアンサー率25% (9/36)
回答No.1
誤差の積もりかたが違うってことでしょうね。
お礼
回答ありがとうございます.わざわざ確認まで・・・.申し訳ないです.