我想找出这样一个函数的根
f <- function(x) {
sum( tanh(Carray + x) ) - x
}
library(rootSolve)
roots <- uniroot.all(f,c(0,1))其中x是标量,Carray是数组。问题似乎是uniroot.all立即将整个x‘is数组发送给f,然后R对执行Carray+x感到困惑(警告:“较长的对象长度不是较短对象长度的倍数”)。
当x是标量时,函数f按预期工作。我不知道如何将f矢量化,这样我就可以向它传递一个x‘’es数组。
发布于 2018-12-24 09:21:57
如果我们知道Carray的大小,也许可以更自然地将f矢量化,但是对于一般的Carray,您可以使用Vectorize
roots <- uniroot.all(Vectorize(f), c(0, 1))发布于 2018-12-24 09:33:48
是,例如:
f <- function(x) {
sum(tanh(y+x))/100-x
}
vf <- Vectorize(f)
y=runif(100,-1,1)
f(x=0.5)
f(x=-0.5)
vf(x=1:2)
uniroot.all(vf,c(-.99,.99))https://stackoverflow.com/questions/53911048
复制相似问题