在这个问题中,我将在matlab中讨论数值计算问题,并希望获得今后如何避免这些问题/错误的经验。
例如,让我们考虑以下简单的代码
t = 0.4 + 0.1 - 0.5
t =
0很好,但是
u = 0.4 - 0.5 + 0.1
u =
2.7756e-17当然,它也是0,但是为什么不在第一次计算得到相同的结果?或者有什么不同?也请看。
v = (sin(2*pi) = = sin(4*pi))
v = (sin(2*pi)==sin(4*pi))
v =
0它表明正弦函数不是周期性的,所以在这种情况下,一般的建议是什么??引入一些epsilon?
V=((sin(2*pi)-sin(4*pi))<eps)
V =
0或
EPS=0.000000000000001
EPS =
1.0000e-15
>> V=((sin(2*pi)-sin(4*pi))<EPS)
V =
1请帮帮我
发布于 2014-01-26 07:37:37
得到这些结果是正常的,因为在Matlab中浮点相对精度是
eps('double')
ans =
2.2204e-16对于V=((sin(2*pi)-sin(4*pi))<eps),因为
sin(2*pi)-sin(4*pi)
ans =
2.4493e-16它比eps('double')大,所以它的结果是V=0。
对于V=((sin(2*pi)-sin(4*pi))<EPS),因为EPS>2.4493e-16,所以它的结果将是V=1。
https://stackoverflow.com/questions/21360387
复制相似问题