平成28年度後期 内容: 2.コンピュータによる問題の数値解法基礎(誤差について) コンピュータによる問題の数値解法基礎(誤差について) コンピューターグラフィクス (コンピューターシミュレーション) 数値計算における誤差の原因 絶対誤差と相対誤差 第2回 誤差の種類 データ誤差,打切り誤差,丸め誤差,桁落ち誤差, 情報落ち誤差 井上 真澄 数値計算における誤差の原因 (4) コンピュータ自身 数値計算では必ず誤差が生じる。 10進数を,コンピュータ内での表現の2進数に変換 → 無限の小数になる場合には,コンピュータでは有限桁の 数として扱われるため,下位の桁を切り捨てる。 誤差の原因の例を挙げる。 (1) 計算方法 値が非常に近い数の引き算 2-1 2-2 → 有効桁数が極端に少なくなる 123562.16 – 123561.02 = 1.14 (2) 元データ ・実験・測定で得たデータを用いて計算する場合,データ に固有誤差が含まれている。 2-3 10進数の0.875 → 2進数の0.111 (0.875 = 0.5 + 0.25 + 0.125 = 2-1 + 2-2 + 2-3) →OK 10進数の0.6 → 2進数の0.100110011… (0.6 = 2-1 + 2-4 + 2-5 + 2-8 + 2-9 + …) ・円周率πや無理数( など)を有限の少数で近似する。 3 → 8ビットで表すとすると0.10011001 (3) 打ち切り → 2-1 + 2-4 + 2-5 + 2-8 =0.59765626 → 元の値と異なる 無限回繰り返される計算を有限回で打ち切る(無限級数など) (後の節で誤差の種類について述べる。) 絶対誤差と相対誤差 (近似値)=(真値)+(誤差) 同じ誤差1 mmでも,1 cmの物に対する場合と1 kmの物に対する 場合では近似の度合いが全く異なる。 → 近似値の精度を表すには相対誤差を用いる。 誤差の定義による分類 近似値をa,真値をAとするとき, ε =a− A ・・・・aの誤差 εa = | a − A | ・・・aの絶対誤差 a− A A ・・・aの相対誤差 εr = 近似値の精度を保つため,誤差を許す範囲・・・許容誤差 ε a = | a − A | < ε p を満たすεp ・・・誤差の限界 (→この逆数を桁数で表して精度いう) 相対誤差が0.0001の場合 → 1/0.0001 = 10000 = 104 → 4桁の精度 誤差の種類 データ誤差 (data error) 数値計算における誤差には以下のような種類がある (発生原因による分類)。 データ入力の段階で既に存在している誤差 ・データの測定誤差 データ誤差 ・無限小数を有限小数にしたことによる誤差 離散誤差 打切り誤差 1/3, ,πなどを有限小数で表現して入力する 2 際に生じる 丸め誤差 誤差 桁落ち誤差 情報落ち誤差 など 丸め誤差 (round-off error) 打切り誤差 (cut-off error) 無限回繰り返すべき計算を有限回の計算で打ち切る場合に 生ずる誤差 (例) sin x = x − 「数を丸める」 ・・数のある桁以下の数を切り上げ,切り捨て,四捨 五入(b進数(b = 2pの場合(p-1)捨p入)の場合) などにより桁数を縮めること x3 x5 x 7 + − +⋅⋅⋅ 3! 5! 7! e x = 1+ x + x2 x3 x 4 + + +⋅⋅⋅ 2! 3! 4! (x > 0) ex について説明: 上式を有限項で打ち切って x2 x3 xn f n ( x) = 1+ x + + + ⋅ ⋅ ⋅ + 2! 3! n! とするときに以下の打ち切り誤差εT(x)が生ずる εT ( x) = e x − f n ( x) (例) ・無限小数を有効桁に丸めたときの誤差 計算機では数を有限桁数で表現 (この有限桁は有効桁数という) → 扱える桁数以上の桁が無視されることによる誤差が生じる (先行する0は取り除いて数える0.0023561 = 2.3561×10-3 → 5桁) t桁に丸められた数値 ・・t桁正しい数値 または 有効t桁の値 桁落ち誤差 円周率 π = 3.14159265358979323846264338… 値の近い数の減算を行ったときに結果の有効数字の桁数が極端に 少なくなることによる誤差。 有効桁数が7桁の計算機の場合 3.141593 (例) 有効桁数が16桁の計算機の場合 3.141592653589793 ・有効数字8桁の2つの数1006.1969と1006.1956との減算 ・10進数を2進数に変換したときの誤差 10進数の0.1を2進数に変換 0.1 = 2-4 + 2-5 + 2-8 + 2-9 1006.1969 – 1006.1956 = 0.0013 2-12 2-13 + + +… → (0.000110011001100…)2 8桁 8桁 2桁 → 2桁のみになってしまう。 【注意】 丸め誤差は数値計算の過程で繰り返し発生し累積する。 ・データの読み込み・・真の値を計算機の有効桁数に丸める ・演算・・・演算結果を計算機の有効桁数に丸める ・データの出力・・画面表示・印刷・ファイル書込み等で設定された 最大桁数に丸める 元の有効数字8桁のうち 下1桁に誤差があるとすると・・・信頼できる桁は1桁のみ 下2桁に誤差があるとすると・・・誤差を含んだ桁しか残って いない x= ax 2 + bx + c = 0 ・ の解 −b ± b2 − 4ac 2a x= b2 >> 4ac → の場合, −b ± b2 − 4ac 2a x= − 2c b ± b 2 − 4ac b>0 − b + b2 − 4ac ( のとき) b<0 − b − b2 − 4ac ( のとき) の計算に桁落ちが生じやすい。 b>0 x= → 対策: − b m b2 − 4ac 分母分子に をかけて変形して x= = = (−b ± b 2 − 4ac ) (−b m b 2 − 4ac ) 2a (−b m b 2 − 4ac ) = b 2 − (b 2 − 4ac) 2 2a (−b m b − 4ac ) 4ac 2a (−b m b 2 − 4ac ) 2c − b m b 2 − 4ac = − 2c b ± b 2 − 4ac 情報落ち誤差 有効桁数が限られているときに,絶対値の大きい数と絶対値 の小さい数を加減算 → 絶対値の小さい数が無視される (例) 30000000 + 1の計算 有効数字8桁の場合: 3.0000000×107 + 1.00000000 = 3.0000001×107 有効数字7桁の場合: 3.000000×107 + 1.0000000 = 3.000000×107 b<0 のとき −2c −b + b2 − 4ac x= の代わりに で計算 2a b + b2 − 4ac のとき x= −b − b2 − 4ac −2c x= の代わりに で計算 2a b − b2 − 4ac
© Copyright 2024 ExpyDoc