HOWTO · MATLAB

MATLAB マシン イプシロン

このチュートリアルでは、MATLAB でのマシン イプシロンについて説明します。

このページの内容

このチュートリアルでは、MATLAB でのマシン イプシロンについて説明します。

MATLAB マシン イプシロン

Machine Epsilon とも呼ばれる Machine Precision は、倍精度の算術数値の特性です。 これらの倍精度数は、MATLAB が実数の近似値である浮動小数点数を格納するために使用する標準 IEEE 754 です。

Machine Epsilon の定義は、仮数のビット数に応じた浮動小数点表現の最大可能相対誤差です。 数学的には、仮数の t ビットは次の式に従って丸められます。

機械イプシロン仮数

この方程式のマシン イプシロンは次のとおりです。

機械イプシロン

Machine Epsilon は常に実装に依存します。 計算精度は、計算に使用されるレジスタのサイズによってハードウェア側で常に制限されます。

計算精度は、ソフトウェア側で浮動小数点数を表すために使用されるデータ型によって制限されます。 倍精度数は、IEEE 754 標準に従って 64 ビットとしてコード化されるため、マシン イプシロンが低いほど、相対精度の計算が大きくなります。

ほとんどの場合、マシン イプシロンは丸め誤差の影響を調査するために使用されます。 MATLAB には、マシン イプシロンを計算するための独自の eps メソッドがあります。 MATLAB とユーザー定義のイプシロンの両方を比較する例を試しました。

macheps = double(1.0);
previous_macheps = macheps;

while(1 < (1 + macheps))
    previous_macheps = macheps;
    macheps = macheps / 2;
end

disp('Our macheps function: ');
disp(previous_macheps);

disp('Built-in MATLAB macheps function: ');
disp(eps);

上記のコードは、ユーザー定義のメソッドと組み込みの MATLAB 関数 eps を使用して Machine Epsilon を計算します。 出力を参照してください:

Our macheps function:
   2.2204e-16

Built-in MATLAB macheps function:
   2.2204e-16