0
在我的平分算法中,它说有一个“缺少值,其中需要真/假”,并指向此行:Bisection方法返回“缺少值,其中需要真假”,无法复制错误
if (sign(f(c)) == sign(f(a)) ) {
a <- c
}
为什么?这条线没什么问题,如果我手动复制它,它工作得很好。然而,当我运行该函数,它产生
Error in if (sign(f(c)) == sign(f(a))) { :
missing value where TRUE/FALSE needed
编辑:完整代码是
Bisection <- function(f, a,b, tol = 0.005, maxiter = 1000) {
i <- 1
while (i < maxiter) {
c <- (a+b)/2
if (f(c) == 0 | (b-a)/2 < tol) { return(c)}
i <- i + 1
if (sign(f(c)) == sign(f(a)) ) {
a <- c
}
else {b <- c}}
return(NA)
}
始终,0和100被用作a和b。
我在不同的函数f上调用这个函数,除了不同的参数,它们是相同的,它仅适用于平分函数失败的一个非常特殊的参数。对于所有其他参数,二等分功能正常工作。
在你的问题中加入'f','c'和'a'。 – nrussell
将'f','c'和'a'所有参数传递给你的函数吗?你如何调用函数? – Gregor