Matlab中的eps是什么 您所在的位置:网站首页 eps是什么意思的 Matlab中的eps是什么

Matlab中的eps是什么

#Matlab中的eps是什么| 来源: 网络整理| 查看: 265

首先要明确什么是浮点数。我不想讨论工业标准,本质上,浮点数就是科学计算法,一切小数都用0.a1a2a3...aN x 10^E的形式来表示。0.a1a2...aN就是尾数。它代表了我们表达一个小数的精度。因此浮点数是有限集,它有最小步长,就是a1=a2=...=aN-1=0,aN=1,E=1。注意我现在还在用十进制,所以不是真正的浮点数。如果换成二进制就行了。eps代表的就是这个最小步长。在单位为1的计算当中,凡是小于0.5*eps的数,都会被表达为0(或应当被看成0),而大于0.5*eps到eps的数,只能被表达成同样的eps。例如:在Matlab中,计算下面两式

1 + eps -1

1 + (0.51 * eps) - 1

所以,eps是一个单位为1的浮点运算系统的最高可能精度。如果我们设置一个算法的tolerance,如果小于eps,可认为在此浮点数系统下,已严格收敛。事实上,很多数学公式就是依此判定的,比如,一般在Matlab中计算

sin(pi)

不会是0,而是一个小于eps的数。因此在程序中判定

if (sin(x) == 0)

是错误的,而应该采用

if (abs(sin(x)) < eps)

或者说,一般不应该采用两个浮点数是否直接相等这样的判定。在Matlab中eps是一个常量,可直接调用。在C语言中,float.h提供了FLT_EPSILON,DBL_EPSILON,LDBL_EPSILON这三个定值,分别表示float,double和long double的浮点精度。而在C++ STL中,提供了epsilon(),如

std::numeric_limits::epsilon()

表示double的浮点精度。开始科学计算之前,明确计算系统的eps是一个不错的习惯。此外,这也提示我们,数学分析中很多任取一个epsilon,存在一个delta的概念,在这里也许会变化,因为现在是存在一个最小的epsilon。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有