g <- function(x) {
log(x)/(1+x)
}
gPrime <- function(x) {
(1 + x - x*log(x))/(x^3 + 2*x^2 + x)
}
guess <- 1.5
tolerance <- .00001
root <- function(g, gPrime, guess, tolerance)
{
x <- guess
while (abs(g(x)) > tolerance)
{
x <- x - g(x)/(gPrime)
}
x
}
root(g, gPrime, guess, tolerance)
我从先前的stackoverflow线程获得了此代码,但对于我的函数,它仅适用于1的实根,而没有其他值。对于除1以外的任何其他值,显示以下错误
Error in g(x)/(gPrime) : non-numeric argument to binary operator
错误可能是由于log函数引起的,因为我尝试了一个没有日志的函数,并且对于任何初始猜测都可以正常工作