正解 ア 次の問題へ

問1 桁落ちによる誤差の説明として適切なものはどれか。

ア 値がほぼ等しい二つの数値の差を求めたとき、有効桁数が減ることによって発生する誤差

イ 指定された有効桁数で演算結果を表すために、切捨て、切上げ、四捨五入などで下位の桁を削除することによって発生する誤差

ウ 絶対値の非常に大きな数値と非常に小さな数値の加算や減産を行ったとき、小さい数値が計算結果に反映されないことによって発生する誤差

エ 無限級数で表される数値の計算処理を有限項で打ち切ったことによって発生する誤差

解説

誤差に関する問題です。(参考:http://ja.wikipedia.org/wiki/%E8%AA%A4%E5%B7%AE
ア 正解
 桁落ちとは、浮動小数点演算で演算結果が限りなく0に近い時に「有効桁数が少なくなる」事で発生する誤差です。
例:31.638584 - 31.606961 = 0.031623
この計算では、計算する2つの数字の有効桁数が8桁に対し、計算結果の有効桁数が5桁になっており、これが「桁落ち」と呼ばれます。
「有効桁数が5桁になった・・・だから何?」と思われるでしょうか?お恥ずかしながら管理人はそう思いました。
この有効桁数が減少(桁落ち)することで問題が発生するのは「計算する元の数字に誤差がある場合」なのです。
浮動小数点演算でのパイ、ルート、三角関数などの複雑な計算では、計算結果の数値には常に誤差があると思ってよいでしょう。
この数値に誤差が含まれる場合に「有効桁数が減少する」と、計算結果に含まれる誤差の割合が増大してしまいます。
「計算結果に含まれる誤差の割合が増大する事」これが桁落ちの問題なのです。

イ 不正解
 丸め誤差の説明です。
コンピュータによる計算では、無限に続く数値もどこかで打ち切って計算しなければいけません。
打ち切る際に、数値を四捨五入などで丸めるために発生する誤差が「丸め誤差」です。

ウ 不正解
 情報落ちの説明です。
例えば有効桁数が3桁しかない場合は次のような計算が発生します「1000 + 1 = 1000」
これは1000を「1 * 10^3」として管理しているところに、1を足すと「1.001 * 10^3」となりますが、これでは有効桁数が4桁となり溢れてしまうので計算結果が「1000 + 1 = 1000」となってしまうのです。

エ 不正解
 打ち切り誤差の説明です。
無限に計算を続けることで精度が向上するとしても、ある程度のところで計算を打ち切るのが現実的です。