R - 函数输入和优化

R - function input and optimization

我通常在 R 中输入函数时遇到问题,但它们总是我设法解决的简单函数。但是现在我手头有一个非常复杂的问题,它需要具有未知数、求和和矩阵的函数。我不知道从哪里开始。 (这不是我的作业题,只是尝试用不同的方法算出一些东西,希望它能奏效)


所以我要输入一个函数:
A=∑i=1Nexp^[∑j=1M 矩阵 ij * 未知j ]

然后最小化函数:
B=log A - ∑j=1M未知j*Cj

所以我的目标是找到最小化函数 B 的 j 个未知参数。


但这很复杂。你不必直接给我答案。您可以使用另一个示例来间接回答我的问题。任何 help/tips/guidance 表示赞赏。

让我们看看能否将问题分解成更小的问题:

让我们先命名一些变量:

  • QN 行和 M 列的矩阵
  • x成为长度为M的(列)向量(暂时认为它不是"unknown")
  • C 为长度为 M
  • 的(列)向量

请注意,AB 都将是 "scalars"(或者,用 R 的说法,1x1 向量)。

提示: 在 R 中,您可以使用 %*% 运算符进行矩阵乘法。参见 Quick-R: Matrix algebra

正在处理函数 A

Q %*% x是指数函数内和内积,所以:

A <- function (Q, x) {
  y <- Q %*% x # This will be a (column) vector of length `N`
  return(sum(exp(y)) # This will be a scalar (more precisely, a 1x1 vector)
}

没那么难吧?

正在处理函数 B

B <- function(Q, C, x) {
  y <- sum(x * C) # or, since both x and C are column vectors:
                  # y <- t(x) %*% C
  a <- A(Q, x)
  return(log(a) - y)
}

所以,这就是您输入函数的方式。

至于优化,建议你看看optimx package;您需要为向量 x.

提供起始值