0

我最难尝试将这个方程实现到 R 中的非线性求解器中。我正在尝试nleqslvBB包,但到目前为止除了错误什么也没有。我已经搜索并阅读了文档,直到我的眼睛流血,但我无法将我的大脑包裹在它周围。方程本身是这样工作的:

方程

s2 * sum(price^(2*x+2)) - s2.bar * sum(price^(2*x)) = 0

其中s2和是已知的s2.barprice长向量。

我尝试的最后一次尝试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)
4

1 回答 1

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。有时一个人可以同时获得解决方案,nleqslvBB并非总是如此。

在打包nleqslv的情况下,默认方法并不总是有效。由于包有不同的方法,您应该使用testnslv包中的函数来查看是否有任何提供的方法找到了解决方案。

于 2017-04-14T05:13:15.453 回答