R中的do until循环逻辑



我有一个函数fk,我有另一个函数calc,其中我传递了两个值x和y,我想做以下操作,直到fk(x)*fk(y) <0,我想将间隔(y-x)加倍。我如何在R中实现这个呢?我在逻辑上很挣扎,任何帮助都会非常感激,

fk <- function(x) {
    return((x*x)-(3*x)+4)
}
calc <- function(x,y) {  
    g <- fk(x)*fk(y)
    until g < 0 do 
    double the interval (y-x)
}

您需要使用以下内容:

calc <- function(x,y) { 
    while (TRUE) {
        g <- fk(x)*fk(y)
        if (g < 0) {
            break
        }
        // otherwise double interval (y-x)
    }
}

正如我在评论中提到的,不清楚如何调整xy的值以使间隔"加倍"。一旦弄清楚了这一点,就可以将所需的代码添加到循环中。

您可以使用while:

while (fk(x) * fk(y) < 0) {
    interval <- (y-x) * 2
}

你的函数看起来像:

calc <- function(x,y) {  
 while (fk(x) * fk(y) < 0) {
        interval <- (y-x) * 2
    }
}

最新更新