[英]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個未知參數。
但這非常復雜。 您不必直接給我答案。 您可以使用另一個示例間接回答我的問題。 任何幫助/提示/指導表示贊賞。
讓我們看看是否可以將問題分解為更小的東西:
讓我們先命名一些變量:
Q
為N
行M
列的矩陣 x
為長度M
的(列)向量(片刻,以為它不是“未知”) C
為長度M
的(列)向量 請注意, A
和B
都是“標量”(或者用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.