R中的浮点不准确?

时间:2013-01-31 13:44:08

标签: r floating-accuracy

R是否存在uniroot和处理浮点的已知问题?

>str(uniroot(function(x) x*(x^2-1) + .5, lower = -2, upper = 2,
+                  tol = 0.0001))

List of 4
$ root      : num -1.19
$ f.root    : num -2.55e-07
$ iter      : int 7
$ estim.prec: num 5e-05
> -1.19 * ( 1.19 ^ 2 - 1 ) + 0.5 
[1] 0.004841

显然f.root的值不等于手工计算的函数的值。

1 个答案:

答案 0 :(得分:3)

你的root值仅显示为2 s.f.,但它估计5e-5的精度。这表明它“知道”你不看的答案中的其他数字。尝试打印root-1.19,你会看到我的意思。

特别是,str旨在以快速方式查看R对象的结构,因此它有意打印有限数量的数字:默认值{{1是3(见digits.d)。只需打印结果(如?struniroot(...),就会显示更多数字,也许可以避免混淆。