MATLAB中eps使用

MATLAB中eps的使用方法

  • MATLAB中eps是一个函数,可以返回某一个数N的最小浮点数精度,形式例如eps(N)。下面我们就通过一些N取不同的值,介绍一下这个函数的详细用法。
eps

Floating-point relative accuracy
Syntax
eps
d = eps(X)
eps('double')
eps('single')

Description

eps returns the distance from 1.0 to the next largest double-precision number, that is eps = 2^(-52).

d = eps(X) is the positive distance from abs(X) to the next larger in magnitude floating point number of the same precision as X. X may be either double precision or single precision. For all X,

eps(X) = eps(-X) = eps(abs(X))
eps('double') is the same as eps or eps(1.0).

eps('single') is the same as eps(single(1.0)) or single(2^-23).

Except for numbers whose absolute value is smaller than realmin , if 2^E <= abs(X) < 2^(E+1), then

eps(X) = 2^(E-23) if isa(X,'single')
eps(X) = 2^(E-52) if isa(X,'double')
For all X of class double such that abs(X) <= realmin, eps(X) = 2^(-1074). Similarly, for all X of class single such that abs(X) <= realmin('single'), eps(X) = 2^(-149).

Replace expressions of the form:

if Y < eps * ABS(X)
with

if Y < eps(X)
  • 默认最小浮点数精度

在MATLAB主窗口中输入eps,回车这是MATLAB默认的最小浮点数精度。
在这里插入图片描述

精度概念

在这里插入图片描述
黑色实心点代表的是数轴的数,例如1,红圈与1的距离代表的就是eps(1),那么在1+eps(1)/2到1之间的所有数,都被认作1,MATLAB无法识别介于1和1+eps(1)/2之间的数。

eps(1),我们看一下下面的例子就明白了

首先是我们看一下eps(1)的值,还是eps的默认值。

然后我们比较1+eps(1)是否与1相等,结果返回的是0;在MATLAB中0即为false,1为true,所以我们知道,1+eps(1)与1并不相等,也就是说,matlab能区分这样的两个数,包括1+0.9*eps(1)以及1+eps(1)0.6,MATLAB都可以区分开,但是当与1的差小于0.5eps(1)的时候,MATLAB已经不能识别,所以,我们可以看到 1 + e p s ( 1 ) ∗ 0.5 = = 1 1+eps(1)*0.5==1 1+eps(1)0.5==1返回的结果是1,也就是为真, 1 + e p s ( 1 ) ∗ 0.4 = = 1 1+eps(1)*0.4==1 1+eps(1)0.4==1返回的结果也为真。我们在工程计算的时候尤其要注意这一点,小心小数吃大数。
在这里插入图片描述
eps(2)以及eps(N)
在这里插入图片描述
在这里插入图片描述
我们可以看到最小精度eps(N)随着数量级增大,eps也在逐渐增大,这在计算的过程中,都要注意。

Matlabeps是一个函数,用于返回某个数的最小浮点数精度。它的形式是eps(N),其N是要计算精度的数字。eps(a)表示|a|与大于|a|的最小浮点数之间的距离,距离越小表示精度越高。默认情况下,a的值为1,即eps = eps(1)。我们可以在Matlab输入epseps(1)来查看结果,发现它们是一样的,默认的eps值为2.2204e-16。eps代表了计算机运算时允许取到的最小值。 在编写代码时,当分母可能为0时,我们可以通过在分母位置加上eps来避免出现错误。例如,对于函数y=cos(x)/x,在编程时应该写成y=cos(x)/(x*eps)。 eps的作用是告诉我们浮点数是有限且不均匀的。它们之间的间隔反映了数字的精度。靠近0的数值之间间隔更密集,精度更高。我们可以画一个简单的图来说明,实心点代表数轴上的数,红色圈与1的距离表示eps(1)。在1和1 eps(1)/2之间的所有数都被认为是1,Matlab无法识别介于1和1 eps(1)/2之间的数。因此,这些数会被四舍五入为1或者1 eps(1)。 除了eps(1),我们还可以使用eps(0)和eps(N)来获得其他精度。例如,eps(0)比eps(1)小很多,在0和eps(0)*0.5之间的所有数都被认为是0,而在eps(0)*0.5以上到eps(0)之间的所有数都被近似为eps(0)。 需要注意的是,最小精度eps(N)随着数量级增大而增大,在计算过程需要注意防止大数吃小数的情况。 总结来说,在Matlabeps函数用于返回某个数的最小浮点数精度,它可以帮助我们确保计算的精度。通过了解eps使用规则,我们可以避免一些错误和不准确的计算结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [matlabeps函数详解](https://blog.csdn.net/qq_33965676/article/details/96314432)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [matlabeps函数学习](https://blog.csdn.net/jxxl_1314/article/details/130662949)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值