1.2 誤 差



(4)誤差を少なくするための計算の工夫

 精度に厳しいプログラムの場合,誤差を少なくするために

計算上の工夫が必要となることがあります。

 たとえば,次のような手段で誤差を少なくします。

 (a) 倍精度浮動小数点演算を用いる。

 (b) 回りくどい計算を省略して,計算式を単純化する。
   
 (c) 精度の高い計算手順を選ぶ。
   

■誤差を少なくする計算(1)

 
において,
   

となり
桁落ちになる可能性があります。これを避けるには,たとえば,

    

として,以下の式で求めます。

    

誤差を少なくする計算(2)

 指数関数の級数展開は以下のようになります。



 その結果,
情報落ちが蓄積して,真値から大きくかけ離れてしまいます。




 単精度による計算結果でも, 1/22,026.2688 =4.539992×10-5 となり,

真値の4.539993×10-5のにほぼ近くなります。


■プログラム例

 ExcelのVBAで単精度浮動小数点を使って,以上のことを確かめてみましょう。

以下にそのプログラム例を示します。

Exp(10) Exp(-10)
Sub ボタン1_Click() ‘ Exp(10)
 Dim V As Single: V = 1
 Dim X As Single: X = 10
 Dim K As Single: K = 1
 N = 100: XX = X
 With Worksheets("Sheet1")
  For i = 1 To N
    V = V + XX
    XX = XX * X / (i + 1)
     .Cells(i + 1, 1) = i
     .Cells(i + 1, 2) = V
   Next
 End With
End Sub
Sub ボタン2_Click() ‘ Exp(-10)
 Dim V As Single: V = 1
 Dim X As Single: X = -10
 Dim K As Single: K = 1
 N = 100: XX = X
 With Worksheets("Sheet1")
  For i = 1 To N
   V = V + XX
   XX = XX * X / (i + 1)
   .Cells(i + 1, 1) = i
   .Cells(i + 1, 4) = V
  Next
 End With
End Sub