发布网友 发布时间:2022-04-23 12:43
共3个回答
热心网友 时间:2023-10-13 21:41
“eps Spacing of floating point numbers."这是matlab中help函数提供的关于eps的说明。意思是浮点数之间的间距。eps标志着matlab计算数值时所能达到的精度。
由于在计算机实际的物理存储中,数字最终是以0和1存储的,不同类型的数据占据着不同的位数。以double类型实数来说(double是默认类型),一个数在存储结构只能占据有限的位数,假设这个数是一个无限不循环小数,这个数就显然无法被精确存储。
事实上,精确存储是做不到的。光考虑0到1这个区间,里面有无限的数,用有限的0和1怎么也无法去一对一表示出所有的数,更不用说全体实数了。
实际的处理方法是把这无限个数变成有限个,把连续的区域离散化。对每一个数,定义了一个到下一个比他大的数的距离,这就是eps。
函数eps(x)返回的就是x到比x大的下一个数的距离,x+eps(x)实际上就是matlab里面比x大的最小的一个数。esp可以不传入任何参数,这时候返回esp(1)的值。
由于‘single’与‘double’数据类型所占物理存储位数不同,自然也有不同的eps。
扩展:
这也就解释了为什么有时候在matlab里面,一个本应该算出0的数会不是0。见下图:
图中随机定义了一个满秩方阵,然后用A乘A的逆再减单位矩阵。显然答案应该为0矩阵,但计算结果不为0,这是因为计算过程中的eps产生误差。
可以用eps来估计这种误差的数量级。
eps(100)
ans =
1.4211e-14
热心网友 时间:2023-10-13 21:42
.eps - Encapsulated PostScript热心网友 时间:2023-10-13 21:42
跨平台的标准格式热心网友 时间:2023-10-13 21:41
“eps Spacing of floating point numbers."这是matlab中help函数提供的关于eps的说明。意思是浮点数之间的间距。eps标志着matlab计算数值时所能达到的精度。
由于在计算机实际的物理存储中,数字最终是以0和1存储的,不同类型的数据占据着不同的位数。以double类型实数来说(double是默认类型),一个数在存储结构只能占据有限的位数,假设这个数是一个无限不循环小数,这个数就显然无法被精确存储。
事实上,精确存储是做不到的。光考虑0到1这个区间,里面有无限的数,用有限的0和1怎么也无法去一对一表示出所有的数,更不用说全体实数了。
实际的处理方法是把这无限个数变成有限个,把连续的区域离散化。对每一个数,定义了一个到下一个比他大的数的距离,这就是eps。
函数eps(x)返回的就是x到比x大的下一个数的距离,x+eps(x)实际上就是matlab里面比x大的最小的一个数。esp可以不传入任何参数,这时候返回esp(1)的值。
由于‘single’与‘double’数据类型所占物理存储位数不同,自然也有不同的eps。
扩展:
这也就解释了为什么有时候在matlab里面,一个本应该算出0的数会不是0。见下图:
图中随机定义了一个满秩方阵,然后用A乘A的逆再减单位矩阵。显然答案应该为0矩阵,但计算结果不为0,这是因为计算过程中的eps产生误差。
可以用eps来估计这种误差的数量级。
eps(100)
ans =
1.4211e-14
热心网友 时间:2023-10-13 21:42
.eps - Encapsulated PostScript热心网友 时间:2023-10-13 21:42
跨平台的标准格式