0
我正在創建一個函數來查找函數的根。這個特定的算法試圖順序地減少已知根位於的窗口的寬度。我希望它採用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)
但它運行,不會停止運行。 這個功能有什麼問題?
它看起來像while循環應該退出。您可以打印出abs(x_1 - x_0)&epsilon來找出爲什麼它不是 – superblygeneralobject
您需要將if語句包含在while循環的主體中。此時while循環的主體只是x2的賦值。 – msandiford