當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。