我正在努力将这个等式实现为R中的非线性求解器。我正在尝试nleqslv
和BB
包但到目前为止只得到错误。我已经搜索并阅读文档,直到我的眼睛流血,但我不能将我的大脑包裹起来。等式本身就是这样的:
s2 * sum(price^(2*x+2)) - s2.bar * sum(price^(2*x)) = 0
s2
,s2.bar
和price
是等长的已知向量。
我在BB
尝试的最后一次尝试是:
gamma = function(x){
n = len(x)
f = numeric(n)
f[n] = s2*sum(price^(2*x[n]+2)) - s2.bar*sum(price^(2*x[n]))
f
}
g0 = rnorm(length(price))
results = BBsolve(par=g0, fn=gamma)
答案 0 :(得分:0)
从您对功能中使用的各种部件的描述中,您似乎已经混淆了公式。
您的函数gamma
最有可能写成
gamma <- function(x){
f <- s2*sum(price^(2*x+2)) - s2.bar*sum(price^(2*x))
f
}
s2
,price
和s2.bar
是您描述中的向量,因此您提供的公式将返回一个向量。
由于您没有提供任何数据,我们无法测试。我尝试使用s2
,price
,s2.bar
的随机生成值进行测试。有时,我们会同时获得nleqslv
和BB
的解决方案,但并非总是如此。
对于包nleqslv
,默认方法并不总是有效。
由于包具有不同的方法,因此您应该使用包中的函数testnslv
来查看是否有任何提供的方法确实找到了解决方案。