准范数的概念与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")
答案 0 :(得分:2)
首先,检查特定R函数的文档总是有帮助的:
?norm
为您提供norm()
使用LAPACK计算x的矩阵范数。范数可以是一个(“O”)范数,无穷大(“I”)范数,Frobenius(“F”)范数,矩阵元素中的最大模数(“M”),或“谱”或“2” - 范数,由类型的值确定。
并且类型的仅有效参数为
“O”,“o”或“1” 指定一个标准,(最大绝对列总和);
“我”或“我” 指定无穷大范数(最大绝对行和);
“F”或“f” 指定Frobenius范数(x的欧几里德范数被视为向量);
“M”或“m” 指定x中所有元素的最大模数;和
“2” 指定“谱”或2范数,它是x的最大奇异值(svd)。
第二,回答你的问题。您可以实现一个函数来自己计算向量的任何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