首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用uniroot.all查找包含数组的函数的根

使用uniroot.all查找包含数组的函数的根
EN

Stack Overflow用户
提问于 2018-12-24 08:34:31
回答 2查看 164关注 0票数 1

我想找出这样一个函数的根

代码语言:javascript
复制
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数组。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-24 09:21:57

如果我们知道Carray的大小,也许可以更自然地将f矢量化,但是对于一般的Carray,您可以使用Vectorize

代码语言:javascript
复制
roots <- uniroot.all(Vectorize(f), c(0, 1))
票数 1
EN

Stack Overflow用户

发布于 2018-12-24 09:33:48

是,例如:

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53911048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档