next up previous contents
Next: 近似値と誤差 Up: 計算機言語 I 第2回 はじめての Previous: プログラムの解説   Contents

計算機イプシロン

繰り返しを使った例として計算機イプシロンを求めてみましょう. 計算機イプシロンとは

1.0 + ε > ε

となる最小の正の数 ε のことです. もちろん, 実数の場合は, (有理数でも)上の式をみたす ε はいくらでも0 に近くとれるので意味がありません. (数学では最小値は存在しないというのでした.)

計算機の場合, 実数型はトビトビの値を取りますから, 上記のε が定まります. 次のプログラムを 2-4.c という名前で入力し, コンパイルして実行してみて下さい. 処理内容については, 各自考えて下さい.

/* File name 2-4.c           */
/* Machine epsilon           */
#include <stdio.h>

main()
{
    int         i;      /* 繰り返しの数を数える */
    double      e;      /* 計算機イプシロン */

    e = 1.0;        /* 実数型では,代入する数も少数にします */

    /* 2で割っていき,1.0 + e = 1.0 となったらループを抜けます */
    for (i = 0; 1.0 + e > 1.0; i++) {
        e /= 2.0;
    }
    /* ループを抜ける一つ手前の値が計算機イプシロンです */
    printf("machine epsilon = 2^(%d)\n", -(i-1));
}



2003-04-24