Краткое описание проблемы
Моя цель - создать функцию с именем newton.raphson
для реализации алгоритма поиска Ньютона-Рафсона root.
Root Алгоритм поиска: x1 = X0 - f (xo) / f '(x0)
У меня есть 2 аргумента:
iter
= количество итераций (значение = 10 ^ 5) epsilon
= для допуска (значение = 10 ^ -10)
Не может зависеть от переменных вне функции
newton.raphson <- function(f, x0, iter=1e5, epsilon=1e-10) {
x <- x0
h <- 1e-5
for (t in 1:iter) {
drvt <- f((x+h)) - f((x-h)) / (2 * h)
update <- x - f(x)/ drvt
if (abs(update) < epsilon) {
break
}
x <- update
}
root <- x
return(root)
}
# Define some function to test
f <- function(x) {
x^2 - 4 * x - 7
}
Я получаю следующие результаты:
> newton.raphson(f, 0)
[1] 2.000045
> newton.raphson(f, 3)
[1] 5.000024
Но результаты должны быть:
-1.316625
5.316625