我用Bisection方法在R中编写了这段代码
Bisection <- function(xL, xR, eps, max_iter){
iter <- 1
while ((abs(xR-xL) > eps) && (iter > max_iter)){
xM <- (xL+xR)/2
if (f(xM)*f(xR) < 0){
xL <- xM
}else{
xR <- xM
}
iter <- iter +1
}
形成一些函数f(x),您可以自己填写。 但是,我有一个想法,那就是它不能正常工作。 有人看到错误了吗?
答案 0 :(得分:1)
我认为您的代码不错,除了一些小错误。 (iter> max_iter)当然应该是(iter f.acc <- function(x){
1+1/x-log(x)
}
xL<- 0.5
xR <- 6
eps <- 1e-6
max_iter <- 100
iter <- 1
while ((abs(xR-xL) > eps) && (iter < max_iter)){
xM <- (xL+xR)/2
if (f.acc(xM)*f.acc(xR) < 0){
xL <- xM
}else{
xR <- xM
}
iter <- iter +1
cat("At iteration", iter, "value of x.mid is:", x.mid, "\n")
}