1.誤差とは
円周率のように、3.141592・・・と続く数字があります。コンピュータでは、ある程度のとこで桁数を有限にする必要があります。
すると、実際の値とは誤差ができます。
応用情報技術者試験のシラバスでは、このあたりに関して以下の記載があります。
(3)算術演算と精度 加減乗除,表現可能な数値の範囲,シフト演算,演算精度(誤差とその対策)など,コンピュータでの算術演算を理解する。 用語例 論理シフト,算術シフト,桁落ち,情報落ち,丸め,打切り,オーバフロー(あふれ),アンダフロー,単精度,倍精度 |
2.誤差の種類
過去問(H20秋SW午前問2)をもとに、誤差に関して整理します。
(1)丸め誤差
「指定された有効けた数で演算結果を表すために,切捨て,切上げ,四捨五入などで下位のけたを削除することによって発生する誤差(過去問(H20秋SW午前問2)より)」です。
「3.14159・・・」を小数点第2位で四捨五入すると「3.1」です。実際の3.14159・・・とは誤差があります。これによって、円の面積が正しく計算できず、誤差が生じてしまいます。
(2)けた落ち(桁落ち)
「値がほぼ等しい二つの数値の差を求めたとき,有効けた数が減ることによって発生する誤差(過去問(H20秋SW午前問2)より)」です。
123.45 - 123.42 = 0.03
(1)丸め誤差
「指定された有効けた数で演算結果を表すために,切捨て,切上げ,四捨五入などで下位のけたを削除することによって発生する誤差(過去問(H20秋SW午前問2)より)」です。
「3.14159・・・」を小数点第2位で四捨五入すると「3.1」です。実際の3.14159・・・とは誤差があります。これによって、円の面積が正しく計算できず、誤差が生じてしまいます。
(2)けた落ち(桁落ち)
「値がほぼ等しい二つの数値の差を求めたとき,有効けた数が減ることによって発生する誤差(過去問(H20秋SW午前問2)より)」です。
123.45 - 123.42 = 0.03
これは何が問題なのですか?
しかも、「誤差」なのですか?
少数は、以下にあるように、α×2のβ乗で表される。
http://sm.seeeko.com/archives/15877104.html
α(仮数部)の桁数は決まっているが、有効桁数が少なくなると、残り部分をゼロ埋めしてします。それって、本当は0じゃないよね?0.1000みたいな、意味のないゼロがつく。これを誤差と言っているのだろう。
また、ITEC社のコンピュータシステムの基礎のp342にわかりやすい事例があった。※こちらは明らかな誤差。
ルート150=12.247449 (有効桁数8桁)
ルート151=12.288206 (有効桁数8桁)
ルート151=12.288206 (有効桁数8桁)
ルート151-ルート150をすると、0.040757になり、有効桁数が減ってしまう。
有効桁数を先に区切るのではなく、有理化して、計算すれば、0.040757013となる。
プログラムの組み方によっては、桁が落ちてしまい、こちらの場合は誤差である。
(3)情報落ち
「絶対値の非常に大きな数値と小さな数値の足し算や引き算を行ったとき,小さい数値が計算結果に反映されないことによって発生する誤差(過去問(H20秋SW午前問2)問より)」、「浮動小数点数の加算において,一方の数値の下位の桁が結果に反映されないことである。(H27春FE問2)」です。
12345+0.6789=
(4)桁あふれ(オーバフロー)
「演算結果が,扱える数値の最大値を超えることによって生じるエラーのことである。(H27春FE問2)」
(5)打切り誤差
「無限級数で表される数値の計算処理を有限項で打ち切ったことによって発生する誤差(過去問(H20秋SW午前問2)より)」です。
有効桁数を先に区切るのではなく、有理化して、計算すれば、0.040757013となる。
プログラムの組み方によっては、桁が落ちてしまい、こちらの場合は誤差である。
(3)情報落ち
「絶対値の非常に大きな数値と小さな数値の足し算や引き算を行ったとき,小さい数値が計算結果に反映されないことによって発生する誤差(過去問(H20秋SW午前問2)問より)」、「浮動小数点数の加算において,一方の数値の下位の桁が結果に反映されないことである。(H27春FE問2)」です。
12345+0.6789=
(4)桁あふれ(オーバフロー)
「演算結果が,扱える数値の最大値を超えることによって生じるエラーのことである。(H27春FE問2)」
(5)打切り誤差
「無限級数で表される数値の計算処理を有限項で打ち切ったことによって発生する誤差(過去問(H20秋SW午前問2)より)」です。
3.誤差に関する過去問
(1)H25秋AP問2問2 桁落ちによる誤差の説明として,適切なものはどれか。
ア 値がほぼ等しい二つの数値の差を求めたとき,有効桁数が減ることによって発生する誤差
イ 指定された有効桁数で演算結果を表すために,切捨て,切上げ,四捨五入などで下位の桁を削除することによって発生する誤差
ウ 絶対値の非常に大きな数値と小さな数値の加算や減算を行ったとき,小さい数値が計算結果に反映されないことによって発生する誤差
エ 無限級数で表される数値の計算処理を有限項で打ち切ったことによって発生する誤差
↓
↓
↓
【正解】ア
(2)H27春FE問2)
問2 桁落ちの説明として,適切なものはどれか。
ア 値がほぼ等しい浮動小数点数同士の減算において,有効桁数が大幅に減ってしまうことである。
イ 演算結果が,扱える数値の最大値を超えることによって生じるエラーのことである。
ウ 浮動小数点数の演算結果について,最小の桁よりも小さい部分の四捨五入,切上げ又は切捨てを行うことによって生じる誤差のことである。
エ 浮動小数点数の加算において,一方の数値の下位の桁が結果に反映されないことである。
↓
↓
↓
ア:桁落ち
イ 桁あふれ(オーバフロー)
ウ:丸目誤差
エ:情報落ち
コメント