您好,关于matlab的eps

问题描述:

您好,关于matlab的eps
您好,我是一位matlab初学者,今天看了您对eps的解答,对于您遗留下来两个自己思考问题,我实在是想不明白为什么1-(1+eps*3/5)= -2.2204e-016
matlb自己运算:
1-(1+eps*2/5)=0
1-(1+eps*3/5)= -2.2204e-016 →这又是为什么呢
按我的理解,eps乘以任何(0,1)内的数的绝对值都是小于eps,那么eps*3/5的绝对值应该是小于eps的,则 1-(1+eps*3/5)应该也等于1.
即使,把(1+eps*3/5)当做一个量,1+eps*3/5=1+1.3323e-016=2.3323e-016,
2.3323e-016的大于eps,则(1+eps*3/5)不能记为零.
所以有 1-(1+eps*3/5)=1-2.3323e-016=-1.3323e-016
因为|-1.3323e-016|小于esp,所以1-(1+eps*3/5)应该为零.
思考了很久,还希望从发问者这里得到一个详细的解答,
有个地方写错了:1-(1+eps*3/5)应该也等于0.
1个回答 分类:数学 2014-10-12

问题解答:

我来补答
eps是一个函数.当没有参数时默认参数是1.返回的是该参数的精度.
也就是说单个的eps实际上是eps(1),表示的是1的精度.
这里要说一下精度的概念.浮点数所能表示的数值范围是很大的,但是浮点数不是无限的,连续的和稠密的;而是有限的,离散的和稀疏的,而且每个数的精度都不一样.越是靠近0,精度越高,反之则越低.eps返回的是1的精度.指的是1和离他最近的浮点数之间的距离.
我们输入eps可以看到1的精度.
也就是说离他最近的浮点数和他相差eps(1).我们可以计算1+eps,他就是离1最近的浮点数.
如果我们计算出的数介于这两者之间,系统就会自动把它舍入到离他最近的数.1+eps*3/5离1+eps近,所以1+eps*3/5≈1+eps;1+eps*2/5离1近,所以1+eps*2/5≈1,而1+eps/2在正当中,系统自动把它舍入到1,即1+eps/2≈1
如果我们输入eps(2)可以看到2的精度,它只有1的精度的一半.即eps(2)=eps*2
因此系统会认为2+eps≈2,而2+eps*6/5≈2+eps*2=2+eps(2)
 
 
展开全文阅读
剩余:2000
上一页:dc2inr3qec3r2
下一页:这样怎么写