Почему мой цикл for показывает только первый результат? (Метод Ньютона - PullRequest
0 голосов
/ 28 января 2019

Есть такая функция, как: y = (e ^ x - 2) ^ n x неизвестен, для n = 2,3,4, ..., 8 Теперь я хочу использовать метод NR, чтобы найтикорень этой функции (начальный x равен 0) для каждого значения n.Вот мой код:

NR <- function(f, tol = 1e-5, ite = 1000){
k <- ite
x0 <- 0
for(n in 2:8){
    for (i in 1:ite){
        #calculate dx
        dx <- genD(func = f, x0)$D[1]
        dx1 <- n * exp(x0) * ((dx - 2) ^ (n - 1))
        #get the x1
        x1 <- x0 - ((f(x0) ^ n) / dx1)
        k[i] <- x1
        if(abs(x1 - x0) < tol){
            root <- x1
            re <- list('root approximation' = root, 'iteration' = length(k))
            return(re)
        }
    x0 <- x1
}
print('Outside the upper iteration')
}
} 

Но эта программа показывает только первый результат (когда n = 2): корневое приближение = 0.6931375, итерация = 15. Похоже, мой внешний цикл игнорируется R. Я нене знаю почему, не могли бы вы помочь мне с этой проблемой?

...