R-函数输入与优化

R-函数输入与优化,r,matrix,sum,mathematical-optimization,R,Matrix,Sum,Mathematical Optimization,我通常在R中输入函数时有困难,但它们总是简单的函数,我会设法计算出来。然而,现在我手头有一个非常复杂的问题,需要有未知数、求和和和矩阵的函数。我不知道从哪里开始。(这不是我的家庭作业问题,只是尝试用不同的方法解决一些问题,希望它能奏效) 所以我想输入一个函数: A=∑i=1 N exp^[∑j=1 M矩阵ij*未知nj] 然后最小化函数: B=日志A-∑j=1m未知j*cj 我的目标是找到使函数B最小化的未知参数j 但这是非常复杂的。你不必直接回答我。你可以用另一个例子间接回答我的问题。感谢

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


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

然后最小化函数:
B=日志A-∑j=1m未知j*cj

我的目标是找到使函数B最小化的未知参数j



但这是非常复杂的。你不必直接回答我。你可以用另一个例子间接回答我的问题。感谢您提供的任何帮助/提示/指导。

让我们看看是否可以将问题分解为更小的部分:

让我们先命名一些变量:

  • 假设
    Q
    是一个矩阵,其中包含
    N
    行和
    M
  • x
    成为长度
    M
    的(列)向量(暂时认为它不是“未知的”)
  • C
    为长度
    M
请注意,
A
B
都是“标量”(或者,用R的说法,是1x1向量)

提示:在R中,可以使用
%*%
运算符进行矩阵乘法。看

使用功能
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)
}
这就是输入函数的方式


至于优化方面,我建议你看一下;您需要提供向量
x

的起始值是
M
N
矩阵的维度?你把它“翻译”成R码了吗?是的,M和N是矩阵的维数。我试过了,但是我被卡住了,因为第二次求和在指数范围内,所以不能使用通常的二次求和,然后我该怎么处理未知量(向量)?哇!!!!这么简单?天哪,这么长时间以来我一直在磕头。非常感谢。是的,我确实调查过optimx软件包。但我并没有明确的未知向量的起始值。但让我试着去做。也许我在解释中遗漏了什么。再次感谢你@麦克很乐意帮忙!顺便说一句,如果你觉得这个答案有用,就投票吧,如果它解决了你的问题,就接受它。@mac另外,如果你想用R做一些符号演算,你可能想看看@mac如果你有一个新问题,请把它作为一个问题发布。也许我能帮助你,也能帮助周围的很多人。在你的问题中加入一些测试数据,使你的问题可以重现。请阅读
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)
}