使用While循环在R中实现牛顿方法

时间:2019-11-21 03:11:50

标签: r while-loop newtons-method

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函数引起的,因为我尝试了一个没有日志的函数,并且对于任何初始猜测都可以正常工作

0 个答案:

没有答案