考虑以下 R 函数
is.sqrt <- function(x, y){
if(x^2 == y) TRUE
else FALSE
}
它回答 x 是否是 y 的平方根。如果 y 是完全平方数,则函数的行为符合预期 - is.sqrt(2,4) 返回 TRUE,is.sqrt(3,4) 返回 FALSE。如果 y 不是完全平方数,就会出现问题。例如,
is.sqrt(sqrt(2), 2)
返回 FALSE。其原因可以通过计算看出
sqrt(2)^2 - 2
返回 4.440892e-16。我对如何解决这个问题的第一个想法是在与 y 比较之前对 x^2 进行舍入,但是舍入多少合适?这甚至是推荐的方式吗? R中有处理浮点精度的标准方法吗?
您可以使用all.equal
在你的函数中,“测试两个对象是否‘几乎’相等”
is.sqrt <- function(x, y){
isTRUE(all.equal(x^2,y)
}
is.sqrt(sqrt(2), 2)
# TRUE
is.sqrt(sqrt(2), 3)
# FALSE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)