我想在 R 中使用 uniroot 找到 log(x) = x2 − 2 的根

f <- function(x)  (log(x)+2-x^2)
uniroot(f, lower=0, upper=100000000)$root

但这显示了错误

最佳答案

uniroot 需要一个区间,其中函数在两个端点处具有相反的符号(因为它使用二分法的变体)。当您不知道在哪里查看时,快速绘制一个图并不是一个坏主意:

f <- function(x)  (log(x)+2-x^2)
x <- seq(0.0,4,0.01)
y <- f(x)
plot(x,y,ylim = c(-1,1),type = "l")
abline(h=0)

这产生:

r - Uniroot log(x) 解决方案-LMLPHP

由此可以看出有两个根,一个在0和1之间,一个在1和2之间:
uniroot(f,interval = c(0,1))$root  #returns 0.1379346
uniroot(f,interval = c(1,2))$root  #returns 1.564445

关于r - Uniroot log(x) 解决方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46818789/

10-11 18:18