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
的值不等于手工计算的函数的值。
答案 0 :(得分:3)
你的root值仅显示为2 s.f.,但它估计5e-5的精度。这表明它“知道”你不看的答案中的其他数字。尝试打印root-1.19
,你会看到我的意思。
特别是,str
旨在以快速方式查看R对象的结构,因此它有意打印有限数量的数字:默认值{{1是3(见digits.d
)。只需打印结果(如?str
或uniroot(...)
,就会显示更多数字,也许可以避免混淆。