【问题标题】:Set a maximum iteration for Bisection Method?为二分法设置最大迭代?
【发布时间】:2013-03-09 19:11:10
【问题描述】:

如何为以下二分法代码设置最大迭代次数 = 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) 
} 

【问题讨论】:

    标签: r maximize


    【解决方案1】:

    while 中的条件更改为while (abs(diff) &gt; tol &amp; feval&lt;22)。 22 因为在第一次迭代中 feval 已经是 2。

    【讨论】:

    • 这只会给你 18 次迭代,除非你用 0 初始化 feval
    • @eugen,你说得对,我在考虑函数评估,已修复。
    • @GuessGucci 如果您认为这个答案足够好,请将其标记为已接受,这样该问题就不会显示在未回答的问题列表中。
    • 我做了,但系统告诉我要等 7 分钟。
    • 对不起,我忘记了时间限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2011-12-16
    • 1970-01-01
    相关资源
    最近更新 更多