功能保持运行

时间:2016-12-13 22:51:40

标签: r function if-statement while-loop

我正在创建一个查找函数根的函数。该特定算法试图顺序地减小已知根所在的窗口的宽度。我希望它采用x的函数,窗口和epsilon的值。用户选择Epsilon,越接近零,根越精确。

这是我的代码:

root.finder <- function(f, x_0, x_1, epsilon) {
    if (f(x_0)*f(x_1)>=0) 
        warning("check values x_0 and x_1")
    while(abs(x_1 - x_0) >= epsilon)
        x_2 <- (x_0 + x_1)/2
    if (f(x_2)*f(x_0) < 0) {
        x_1 <- x_2
    } else {
        x_0 <- x_2
    }
    print(x_2)
}

我试图通过使用:

来测试它
root.finder(x^3-3*x+1, 0, 1, 1) 

但它运行并且不会停止运行。 这个功能有什么问题?

1 个答案:

答案 0 :(得分:0)

根据评论,我认为您需要在if循环体中包含while语句,如下所示:

root.finder <- function(f, x_0, x_1, epsilon) {
    if (f(x_0)*f(x_1)>=0) 
        warning("check values x_0 and x_1")
    while(abs(x_1 - x_0) >= epsilon) {
        x_2 <- (x_0 + x_1)/2
        if (f(x_2)*f(x_0) < 0) {
            x_1 <- x_2
        } else {
            x_0 <- x_2
        }
    }
    print(x_2)
}