簡體   English   中英

R-函數輸入和優化

[英]R - function input and optimization

我通常在R中輸入函數時遇到麻煩,但我總是設法將它們簡單化。 但是,現在我手頭有一個非常復雜的問題,需要具有未知數,求和和矩陣的函數。 而且我不知道從哪里開始。 (這不是我的作業問題,只是嘗試使用另一種方法來設計出某些東西,希望它能起作用)


所以我想輸入一個函數:
A = ∑ i = 1 N exp ^ [∑ j = 1 M矩陣ij *未知j ]

然后最小化該功能:
B = log A-∑ j = 1 M未知j * C j

所以我的目標是找到使函數B最小的j個未知參數。


但這非常復雜。 您不必直接給我答案。 您可以使用另一個示例間接回答我的問題。 任何幫助/提示/指導表示贊賞。

讓我們看看是否可以將問題分解為更小的東西:

讓我們先命名一些變量:

  • QNM列的矩陣
  • x為長度M的(列)向量(片刻,以為它不是“未知”)
  • C為長度M的(列)向量

請注意, AB都是“標量”(或者用R的話來說是1x1向量)。

提示:在R中,您可以使用%*%運算符進行矩陣乘法。 請參閱Quick-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)
}

不是那么難,不是嗎?

使用功能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軟件包 您需要提供向量x起始值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM