如何计算对偶范数?

问题描述 投票:0回答:1

假设我有一个标准

||x||
。有没有 R 函数或方法可以让我计算对偶范数

||y||_* = \max_{x} x^Ty : ||x|| ≤ 1

我最初的想法是,这属于约束优化问题,所以我想有一些有用的包可以解决这个问题,但我无法制定如何做到这一点。

r optimization constraints
1个回答
0
投票

也许您可以尝试

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
© www.soinside.com 2019 - 2024. All rights reserved.