誤差について                               戻る

 ある一つの問題を解こうとするとき、ある特別な場合を除いて、誤差は必ず起こり得る。
なぜなら、数値計算では、筆算にしろ電卓を使うにしろ、無限の桁数を持つ数値は扱えない
からである。

 数学では、理論値で数値計算するので、平方根や対数などのいろいろな記号を駆使して、
きっちり計算結果を示すことが可能であるが、他の実験科学(物理、化学、生物、・・・)では、
実験値でデータを処理するので、誤差との同居は宿命である。

  どんなに正しい計算をする人でも、どんなに優秀なコンピュータでも、このことは避けるこ
とのできないことである。

例 数学では、通常、分数表記 たとえば、  を用いるが、実験値としては、小数表記
  0.6 を用いるのが常識となっている。0.60、0.600、0.6000、・・・ などによって、その数
  の有効桁数を示し、その数値の精度を表すことになっている。

 具体的な問題を、数学の問題として記述するとき、不正確なデータや仮定が入る場合が
ある。
 このとき、いくら正確に計算を行っても、計算結果は意味のないものになってしまう。

 問題の記述の段階で生ずる誤差を、入力誤差(観測誤差)という。

 数学的に問題を解析するとき、条件の簡素化を行うことが多い。摩擦力や空気抵抗を無
視したり、球面なのに平面と考えたり、無限回の操作が必要なのに有限回で打ち切ったり
する。
 誤差を意識する場合、これらの簡素化は注意深くやらなければならない。

 問題を解析し、数値計算の問題へ直すときに生ずる誤差を、解析誤差という。

 プログラムを組んでコンピュータで計算を行う段階になっても誤差は起こり得る。

 桁数の長い数を決められた桁数の数で近似する操作を、「丸め」という。計算には、その
ために生ずる誤差、丸め誤差がつきものであり、決定的な段階での丸め誤差が、結果に
大きく影響する場合がある。

 このように非常に多くの誤差が存在し、計算結果に及ぼす影響は計り知れない。その呪
縛から逃れることは、とても難しくかつ困難である。

 そこで、誤差の影響を最小限に抑えるように、問題に対処することが重要になってくる。

 誤差は、
         (測定値)−(真の値)
で求められる。
 但し、真の値は、絶対に知ることが不可能な値なので、個々の測定値に対する誤差も絶
対に知ることができない値である。

 従って、単に誤差という場合は、最大誤差を指す場合が多い。

 問題を解く段階で与えられた数値が、正確な値なのか、誤差を含む値なのか判断に迷う
場合がある。その場合は、有効数字に注意して計算することになる。

<<結果の有効数字の決め方>>

(1)答の有効数字の桁数が指定されているとき

      1桁多く算出し、四捨五入によって、所要の桁数とする

(2)答の有効数字の桁数が指定されていないとき

   (イ)問題中の有効数字の桁数がそろっているとき

      問題中の有効数字の桁数にあわせる

   (ロ)問題中の有効数字の桁数がそろっていないとき

      最も小さい有効数字の桁数にあわせる
      (例 38.74÷6.9=5.61449 →5.6)

   (ハ)問題中の有効数字の桁数が明示されていないとき

        規則:問題中の数の桁数とほぼ等しくとる
           (例:3.27×2.59=8.4693 →8.47)
        規則:n乗およびn乗根は、元の数の桁数とほぼ等しくとる
           (例:0.876の3乗=0.67222・・・ →0.672
              3乗根0.876=0.95682・・・ →0.957)
        規則:いろいろな桁数の数が混在しているときは、中間の桁数をとる
           (例:4.726×5.8=27.4108・・・ →27.4(4桁、2桁→3桁)
              5.43×2.582=2.10302・・・ →2.10(3桁、4桁→3桁))

<<途中計算の有効数字の決め方>>

        問題中の数の桁数、答に要求されている桁数より1桁程度多くとる
           (例: 5.38×6.74×4.12×4.37
                36.2612
              =36.26×4.12×4.37
                 149.3912
              =149.4×4.37
                 652.878
              =653
           そのまま計算すると、652.8611318で、やはり653)

<<加算・減算の結果の有効数字の決め方>>

        最も最大誤差の大きい数と末位を一致させる
           (例: 736.37+91.468+1265.5+8.7363
              =2102.0743 →2102.1)
        各数を所要の桁より1位低くとり計算してもよい
           (例: 736.37+91.468+1265.5+8.7363
              =736.37+91.47+1265.5+8.74
              =2102.08 →2102.1)

<<浮動小数点表示された数の四則演算>>

      N=±a×10n  (a:仮数部で、0≦a≦1、n:指数部)

の形の数値計算は、次のような手順で行う。

(1) 乗除算の場合
  (@) 符号を決める
  (A) 仮数部の乗除算を行う(2倍の桁数まで計算する)
  (B) 指数部の加減算を行う
  (C) 正規化(小数第一位の数を0以外の数にすること)と丸めを行う

例 (0.1357×103)×(0.2468×102
  =(0.1357×0.2468)×105
  =0.03349076×105
  =0.3349×104

(2) 加減算の場合
  (@) 指数部を大きい方に合わせる
  (A) 仮数部の加減算を行う(桁数を数桁多く計算する)
  (B) 正規化(小数第一位の数を0以外の数にすること)と丸めを行う

例 (0.1357×103)+(0.2468×102
  =(0.1357×103)+(0.02468×103
  =(0.1357+0.02468)×103
  =0.16038×103
  =0.1604×103


  加減算において、注意しなければならない場合がある。

 ほぼ等しい数の減算の場合には、有効数字の喪失(これを、桁落ちという)という現象が
起きる。この場合は、所要の桁数より3〜4桁多くとって計算する。

例 (0.1357×103)−(0.1355×103)=0.0002×103=0.2

 上記の計算では、有効数字4桁の数が有効数字1桁の数に桁落ちしている。これを、3桁
の桁落ちという。

 一般に、p桁の桁落ちがあると、その相対誤差は、10p 倍にもなるという。

 同様のことが平方根の計算でも起こり得る。

 例えば、十分小さいXに対して、 の値を求める場合である。

  X=0.1357×10-2 に対して、1+X=1.0014 より、 =0.7×10-3
と計算で求められるが、桁落ちにより、多くの誤差を含んでしまっている。

 桁落ちを防ぐ方法としては、分子の有理化という方法がよく知られている。

実際に、
    

 どちらがより真の値に近いかというと、

     ≒ 0.0006783=0.6783×10-3  ということから明らかであろう。

 2次方程式の解を、解の公式を用いて数値計算する場合、上と同様なことが起こり得る。
  (aX2+bX+c=0 において、4c に比べて、b2 が十分大きい場合)

その場合は迷わず分子の有理化を実行して、桁落ちによる相対誤差の増加を防げばよい。

 また、次のように、問題の出題者が注意しなければならない場合もある。

例 =3.16 のとき、
                   
  の値を求めよ。

 通常は、分母を有理化して、

                   

と計算してくれるものと出題者は期待するが、次のように計算する人もいないわけではない。

                   

 私だったら、この解答も正解とするが、一般的には、どうなんだろうか?

<<掛け算の回数>>

  数値計算をするとき、できるだけ掛け算の回数は減らした方がよい。

 A10 を計算するとき、A,A2,A3,・・・と順次計算していくのは、堅実であるが、非能率で
ある。実は、A10 は、4回の掛け算で求めることが出来る。

            ((A22×A)2

と分解すればよい。

 同様にして、A100000 の掛け算の回数は、20回で済むし、A488 は、11回の掛け算で
済む。何故かは、皆さんの課題としたい。

(参考文献:D.G.Moursund C.S.Duris Elementary Theory and Application of
                               Numerical Analysis(McGraw-Hill)
       野崎昭広 数値解析について(昭和57年度神奈川県数学講座)
       力武常次・北村良夫・清水光治 物理T・U(数研出版)
       名取 亮 著 線形計算(朝倉書店))