2013-03-09 148 views
1

如何設置以下二分法代碼最大迭代= 20?我應該只在feval上工作嗎?還是其他什麼?設置二分法的最大迭代次數?

rf.bisection <- function(f, lower, upper, tol=1e-4) { 
flow <- f(lower) 
fupper <- f(upper) 
feval <- 2 

if (flow * fupper > 0) stop("The given interval does not contain the root! 
\n") 
diff <- upper - lower 

while (abs(diff) > tol) { 
    newpoint <- (lower + upper)/2 
    newf <- f(newpoint) 
    if (abs(newf) <= tol) break 
    if (flow * newf < 0) upper <- newpoint 
    if (fupper * newf < 0) lower <- newpoint 
    diff <- upper - lower 
    feval <- feval + 1 
} 
list(x = newx, value = newf, fevals=feval) 
} 

回答

2

while更改條件while (abs(diff) > tol & feval<22)。 22因爲在第一次迭代feval已經是2

+0

這隻會給你18次迭代,除非你初始化'0。 – eugen 2013-03-09 19:18:37

+0

它的工作feval'!謝謝你的幫助。 – 2013-03-09 19:18:41

+0

@eugen,你說得對,我正在考慮功能評估,修正。如果 – 2013-03-09 19:22:42