情報落ち

(2016/08/21)
  • コンピュータでの数値計算における誤差の一種

  • 指数部の値が異なる2つの数値の加減算を行う
  • この際、指数部の小さい数値が指数部の大きい数値に合わされてから計算される
  • このとき、指数部の小さい方の仮数部の値が右にシフトされることで発生する
  • 有効桁数4桁で下記の演算を行う
  • 1425 + 1.297
  • mathmatica
  • 0.1425 * 10^4 + 0.1297 * 10^1
  • = 0.1425 * 10^4 + 0.0001297 * 10^4 // ここで0.0001297の下3桁が切り捨てられる
  • = 0.1425 * 10 ^4
  • 解決策

  • 指数部の小さい順、つまり絶対値の小さい順にデータを並び替え、
  • 絶対値の差のない数値同士の演算を先に行うといった工夫が必要
  • 足す値が2つしかなくて絶対値の差が大きいと対策のしようがなさそう
  • 応用情報技術者試験

general(396)