假设我有一个标准
||x||
。有没有 R 函数或方法可以让我计算对偶范数
||y||_* = \max_{x} x^Ty : ||x|| ≤ 1
?
我最初的想法是,这属于约束优化问题,所以我想有一些有用的包可以解决这个问题,但我无法制定如何做到这一点。
也许您可以尝试
fmincon
包中的 pracma
并定义自定义双范数函数,例如,
library(pracma)
dual_norm <- function(x, p) {
constr <- \(y) sum(abs(y)^p)^(1 / p) - 1
fobj <- \(y) -sum(x * y)
out <- fmincon(x * 0, fobj, hin = constr)
list(value = -out$value, par = out$par)
}
> set.seed(0)
> n <- 10
> x <- rnorm(n, 5)
> dual_norm(x, 2.5)
$value
[1] 21.65689
$par
[1] 0.4373093 0.3597886 0.4404155 0.4377502 0.3968707 0.2944359 0.3281715
[8] 0.3614039 0.3760524 0.4889590