Есть такая функция:
у = (е ^ х - 2) ^ н
x неизвестен, для n = 2,3,4, ..., 8
Теперь я хочу использовать метод NR, чтобы найти корень этой функции (начальный x равен 0).
Я знаю, как написать метод NR, если n является фиксированным значением, вот мой исходный код NR:
NR <- function(f, x0, tol = 1e-5, ite = 1000){
require(numDeriv) #call the package for computing dx
k <- ite
for (i in 1:ite){
#calculate dx
dx <- genD(func = f, x = x0)$D[1]
#get the x1
x1 <- x0 - (f(x0) / dx)
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')
}
Теперь я переписал свою функцию:
f <- function(x, n){
(exp(x) - 2) ^ n
}
Если я хочу вывести каждый корень для разных n, я думаю, что я должен добавить еще один цикл перед циклом "for (i in 1: ite)"
Поэтому я переписываю свой код функции NR:
NR <- function(f, x0, tol = 1e-5, ite = 1000){
require(numDeriv) #call the package for computing dx
k <- ite
for(n in 2:8){
for (i in 1:ite){
#calculate dx
dx <- genD(func = f, x = x0)$D[1]
#get the x1
x1 <- x0 - (f(x0, n) / dx)
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')
}
}
Но когда я запускаю NR (f, 0), R показал мне ошибку:
Ошибка в func (x, ...): отсутствует аргумент "n" без значения по умолчанию
Как я могу это выяснить?
Спасибо за вашу помощь!