✔ 最佳答案
這函數沒有 global max/min...
是不是能給明確的範圍,尤其是 y
2015-02-19 23:04:15 補充:
您可使用有限制條件的最佳化演算法並給予條件,如下:
f <- function(x){ return(x^2-2*abs(x)) }
optim(5, f, method = 'L-BFGS-B', lower = 0)
L-BFGS-B 是一個接受單純上下界的演算法
使用 lower, upper 參數去指定,像此例設 lower = 0 就不會找出負的最佳解
對多變數也可以如下:
抱歉想創造問題中 (1, 2), (2, 1) 有相同極值的函數臨時找不到
所以用自己的,假設函數為 f(x, y) = 2x^2-2xy^2-2x+y^4
f <- function(x){ return(2*x[1]^2-2*x[1]*x[2]^2-2*x[1]+x[2]^4) }
它在 (1, ±1) 皆有極值 -1
只想找 (1, -1) 可寫:
optim(c(3, 4), f, method = 'L-BFGS-B', upper = c(Inf, 0))
如果限制條件的形式為 x+y-1 ≦ 0 這種
建議改用 constrOptim, 詳見參考資料
constrOptim(c(1, -2), f, NULL, ui = c(-1, -1), ci = -1)
其中 ui, ci 意思為 ui 矩陣乘上變數向量大於等於 ci 向量
所以 x+y-1 ≦ 0 要變成 -x-y ≧-1
變數與 ci 二個向量維度必須等大小,ui 根據限制多寡就有幾列
更複雜形式的約束條件可參考 R 語言本身的說明
希望以上回答對您有幫助!