第2種情報処理技術者試験 1995年度 = 平成7年度・秋期 午前 問7

 1,000個のデータを浮動小数点演算で加算するとき、次の方法のうちで計算誤差を最も小さくするものはどれか。

 ア  すべてのデータを降順に並べ替え、配列の先頭から順に加える。
 イ  すべてのデータを昇順に並べ替え、配列の先頭から順に加える。
 ウ  すべてのデータを絶対値に関して、降順に並べ替え、配列の先頭から順に加える。
 エ  すべてのデータを絶対値に関して、昇順に並べ替え、配列の先頭から順に加える。
 オ  負数を先に加算し、その後で正数を加算する。

解答

 エ

解説

 有効けた数が6けたであるとしましょう。このとき、加算123456+0.0001を行っても、小さい方の値である0.0001は無視されるという情報落ち誤差が生じます。
 極端に大きい値と小さい値の加算では後者が無視されますので、あらかじめ小さい値を寄せ集めておいて加算しておき、ある程度大きくしておいてから大きい値と加算したほうが良いことが分かります。ただし、のように加算すると、加算結果がマイナスからプラスに移行する際に情報落ち誤差が生じる可能性がありますから、のように、絶対値の昇順にソートしてから加算を行います。


BohYoh.comトップページへ