matlab中eps函数学习

1. eps函数说明:浮点相对精度,为正数。

2. 相关语法

(1)d=eps;matlab中一般默认数值数据类型为double(双精度),所以eps=eps(1)=eps(‘double’)=2^(-52)=2.2204e-16;

  (2)d=eps(x);其中x的数据类型可以是单精度或者双精度,返回从abs(x)到与x精度相同的下一个较大浮点数的正距离;如果x为duration(Lengths of time in fixed-length units,时间单位),则返回下一个较大的duration值。eps(x)会随着x的数据类型和数值大小而变化,如下所示:随着想增加,浮点精度也会增加;另外double型数值的浮点精度小于single型数值的浮点精度,精度越小表明取点可以越密集;

数据类型singledoubleduration(以小时为单位)
eps(1)  1.1921e-07  2.2204e-16 1.2935e-16小时
eps(10)  9.5367e-07 1.7764e-15 2.0696e-15小时

(3)d=eps(datatype);根据datatype指定的数据类型返回eps值,该数据类型可以是 'double' 或 'single'。eps('double')=eps(double(1)),eps('single')=eps(single(1));

3. eps使用说明:在除数中出现0的情况时,需要采用eps函数,防止matlab报错(matlab 2018版本)或者计算结果为NaN (2021版本);如下程序:

x=-8:0.5:8;

y=sin(x)./x;

当x=0时,y计算结果为NaN;而当x趋向于0零时,y=1;

为了获得正确的结果,需要在除数x上添加eps,如下所示,这时,当x=0时,y=1;

y=sin(x)./(x+eps)

4. eps其他说明:matlab中会将[x,x+a*eps(x)] (其中0≤a<0.5)范围内的数值默认为x,将[x+a*eps(x), x+eps(x)] (其中0.5≤a≤1)范围内的数值默认为x+eps(x); 如下逻辑判断语句:

1==1+0.3*eps;logical 1;

1==1+0.5*eps;logical 0;

需要说明一点,在[x-a*eps(x),x]  (其中0≤a<0.5)范围内的数值不一定为x;因为浮点精度eps在不同x下取值不一样,随着abs(x)的增大,精度eps也会增加,取点数变得稀疏;

1==1-0.3*eps; logical 0;

1==1-0.1*eps;logical 1;

附加:matlab单精度和双精度的区别为:存储不同、范围不同、转换不同。 1、单精度:单精度在计算机中用 4 个字节来存储的。 2、双精度:双精度在计算机中用 8 个字节来存储的。 1、单精度:单精度表示的数值的范围比双精度表示的数值的范围小。 2、双精度:双精度表示的数值的范围比单精度表示的数值的范围大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值