2015-08-14 70 views
2

我有一個函數fk,我有另一個函數calc,其中我傳遞了2個值x和y。我想做以下事情,直到fk(x)* fk(y)< 0,我想要加倍間隔(y-x)。我將如何在R中完成此操作。我掙扎的邏輯,任何幫助將不勝感激,直到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) 
} 
+1

如果'x'和'y'作爲單獨的參數傳入,我們怎樣才能使間隔加倍? –

回答

1

你想沿這些線使用的東西:

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

正如我在我的評論中提到的那樣,目前還不清楚如何調整xy的值以便「加倍」間隔。一旦你弄清楚了,你可以將所需的代碼添加到循環中。

2

你可能用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 
    } 
}