当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R norm-methods 矩阵范数


R语言 norm-methods 位于 Matrix 包(package)。

说明

使用 Lapack 计算密集矩阵,计算 x 的矩阵范数。范数可以是矩阵元素中的一( "O""1" )范数、无穷大( "I" )范数、弗罗贝尼乌斯( "F" )范数、最大模数( "M" ),或谱范数或 2-范数 ( "2" ),由 type 的值确定。

用法

norm(x, type, ...)

参数

x

实数或复数矩阵。

type

指示所需规范类型的字符。

"O""o""1"

指定一个范数(最大绝对列总和);

"I""i"

指定无穷范数(最大绝对行和);

"F""f"

指定 Frobenius 范数(x 的欧几里得范数被视为向量);

"M""m"

指定x中所有元素的最大模数;和

"2"

指定 “spectral norm” 或 2-范数,它是 x 的最大奇异值 (svd )。

默认为 "O" 。仅使用type[1] 的第一个字符。

...

传入或传出其他方法的进一步参数。

细节

对于稠密矩阵,这些方法最终调用 Lapack 函数 dlangedlansydlantrzlangezlansyzlantr

"norm" 的数值,表示根据 type 选择的数量。

例子

x <- Hilbert(9)
norm(x)# = "O" = "1"
stopifnot(identical(norm(x), norm(x, "1")))
norm(x, "I")# the same, because 'x' is symmetric

allnorms <- function(d) vapply(c("1","I","F","M","2"),
                               norm, x = d, double(1))
allnorms(x)
allnorms(Hilbert(10))

i <- c(1,3:8); j <- c(2,9,6:10); x <- 7 * (1:7)
A <- sparseMatrix(i, j, x = x)                      ##  8 x 10 "dgCMatrix"
(sA <- sparseMatrix(i, j, x = x, symmetric = TRUE)) ## 10 x 10 "dsCMatrix"
(tA <- sparseMatrix(i, j, x = x, triangular= TRUE)) ## 10 x 10 "dtCMatrix"
(allnorms(A) -> nA)
allnorms(sA)
allnorms(tA)
stopifnot(all.equal(nA, allnorms(as(A, "matrix"))),
	  all.equal(nA, allnorms(tA))) # because tA == rbind(A, 0, 0)
A. <- A; A.[1,3] <- NA
stopifnot(is.na(allnorms(A.))) # gave error

参考

Anderson, E., et al. (1994). LAPACK User's Guide, 2nd edition, SIAM, Philadelphia.

也可以看看

onenormest() ,1-范数条件数的近似随机估计,对于大型稀疏矩阵非常有效。

norm()函数来自Rbase包。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Matrix Norms。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。