我正试图找到这样的函数的根源
f <- function(x) {
sum( tanh(Carray + x) ) - x
}
library(rootSolve)
roots <- uniroot.all(f,c(0,1))
其中x是标量,Carray是数组。问题似乎是uniroot.all立即向f发送整个x数组,然后R对执行Carray + x感到困惑(警告:“较长的对象长度不是较短的对象长度的倍数”)。
当x是标量时,函数f可以按预期工作。我不确定如何对f进行矢量化处理,以便可以将x数组传递给它。
答案 0 :(得分:1)
如果我们知道Carray
的大小,则可以更自然地向量化f
,但对于一般的Carray
,您可以使用Vectorize
:>
roots <- uniroot.all(Vectorize(f), c(0, 1))
答案 1 :(得分:0)
是的,例如:
HTMLButtonElement