while错误(tol> 1e-05){:R中的代码牛顿方法缺少值

时间:2018-10-27 17:11:47

标签: r newtons-method

我正在尝试用牛顿法求最小值的
f(x)= 7x对数(x)

x_0 = 0.01

这是我的代码:

x<-0.01
tol<-10
count<-0
while(tol>1e-5){
  count<-count+1
  fx<-7*x-log(x)
  fprimex<-7-(1/x)
  xnew<-x-fx/fprimex
  tol<-abs(xnew-x)
  x<-xnew
}
x
tol
count

但是有错误 (((while(tol> 1e-05)发生错误{:需要TRUE / FALSE的缺少值 另外:警告消息: 在log(x)中:产生了NaN))

我该如何解决我的密码。

1 个答案:

答案 0 :(得分:1)

当x接近最小值时,斜率接近0,下一个估计使x <0,因此log(x)的NaN。

您的上面的循环正在解决f(x)=0,它没有真实的根,因此是上面提到的失败。要找到最小值或最大值,请找到导数的斜率等于0的地方。求解fprime(x) = 0,在这种情况下,最小值为1/7。