机器 epsilon (eps)

计算科学 matlab 浮点 精确
2021-12-06 10:48:04

机器 epsilon 的 wiki 说:

“由于浮点运算中的舍入,机器 epsilon 给出了相对误差的上限”

如果机器 epsilon 是相对误差的上限,为什么浮点数之间的间距实际上会随着数字变大而变大?例如在 MATLAB 中:

EPS(1)= 2.220446049250313E-016(2)
EPS(2)= 4.440892098500626C-016
EPS(4)= 8.881784197001252C-016
EPS(8)= 1.776356839400251CE-015
...
EPS(Realmax)= 1.995840309534720 +292

那么如果 eps 小于所有这些数字,那么相对误差的上限如何呢?

1个回答

Matlab 命令help eps说明如下:

D = EPS(X),是从 ABS(X) 到与 X 具有相同精度的下一个较大的浮点数的正距离。X 可以是双精度或单精度。

换句话说,如果εmach由于浮点引起的相对误差,如维基百科文章中所定义,则eps(x)将,对于任何正常的x, 是x^εmach, 在哪里x^是两个的最大幂,使得|x^||x|.

不带参数调用eps会给你相对错误,eps(x)带参数调用会给你那个参数的绝对错误。