Как рассчитать квази-норму вектора? - PullRequest
0 голосов
/ 10 мая 2018

Идея квазинормы аналогична норме Lp, но с 0<p<1

Если мы используем type="2", это означает, что L2-норма и type="1" относятся к L1-норме.

Я пробовал это в R, но не работает для квази-нормы.

Итак, мне интересно, может кто-нибудь помочь с этим, пожалуйста?

e <- as.matrix(c(1,1,1,1,1)) 
norm(e, type="0.5")

1 Ответ

0 голосов
/ 10 мая 2018

Во-первых, всегда полезно проверить документацию определенной R-функции:

?norm

дает вам, что norm()

Вычисляет матричную норму xиспользуя LAPACK.Нормой может быть единичная («O») норма, бесконечность («I»), норма Фробениуса («F»), максимальный модуль («M») среди элементов матрицы или «спектральный»или "2" -норма, определяемая значением типа.

и что только допустимые аргументы для типа равны

«O», «o» или «1» задают одну норму (максимальная абсолютная сумма столбца);

«I» или «i» задают бесконечную норму (максимальная абсолютная сумма строки);

"F" или "f" указывает норму Фробениуса (евклидова норма x, обработанную так, как если бы это был вектор);

"M" или "m" задает максимальный модульвсех элементов в х;и

«2» указывает «спектральный» или 2-норму, которая является наибольшим единственным значением (svd) x.

Второе, чтобы ответить на ваш вопрос.Вы можете самостоятельно реализовать функцию для вычисления любой Lp-нормы вектора:

lpnorm <- function(x, p){
  n <- sum(abs(x)^p))^(1/p)
  return(n)
}
a <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8))
lpnorm(a, 1)
# 36
norm(a, type="1")
# 36
lpnorm(a, 2)
# 14.28286
norm(a, type="2")
# 14.28286
lpnorm(a, 0.5)
# 265.8857
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...