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



我正在尝试牛顿方法来寻找
f(x(=7x log(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

但是有erorr(while中的错误(tol>1e-05({:缺少需要TRUE/FALSE的值此外:警告消息:在log(x(中:生成NaNs(

如何修复我的代码。

当x接近最小值时,斜率接近0,下一个估计值使x<0并且因此是用于CCD_ 1的NaN。

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

最新更新