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


R norm 計算矩陣的範數


R語言 norm 位於 base 包(package)。

說明

使用 LAPACK 計算 x 的矩陣範數。範數可以是矩陣元素中的一 ( "O" ) 範數、無窮大 ( "I" ) 範數、弗羅貝尼烏斯 ( "F" ) 範數、最大模數 ( "M" ) 或 “spectral”或 "2" -norm,由 type 的值確定。

用法

norm(x, type = c("O", "I", "F", "M", "2"))

參數

x

數值矩陣;請注意, Matrix 等包定義了更多norm() 方法。

type

字符串,指定要計算的矩陣範數的類型。指示所需規範類型的字符。

"O""o""1"

指定一個範數(最大絕對列總和);

"I""i"

指定無窮範數(最大絕對行和);

"F""f""E""e"

指定 Frobenius 範數(x 的歐幾裏得範數被視為向量);

"M""m"

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

"2"

指定 “spectral” 或 2-範數,它是 x 的最大奇異值 (svd )。

默認為 "O" 。僅使用type[1] 的第一個字符。

細節

norm()base 方法調用 LAPACK 函數 dlange

請注意,1-、Inf- 和 "M" 範數的計算速度比 Frobenius 範數更快。

底層 LAPACK 代碼的不成功結果將導致錯誤,並給出正錯誤代碼:這些隻能通過詳細研究 FORTRAN 代碼來解釋。

矩陣範數,一個非負數。 0 範圍(空)矩陣為零。

例子

(x1 <- cbind(1, 1:10))
norm(x1)
norm(x1, "I")
norm(x1, "M")
stopifnot(all.equal(norm(x1, "F"),
                    sqrt(sum(x1^2))))

hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, `+`) }
h9 <- hilbert(9)
## all 5 (4 different) types of norm:
(nTyp <- eval(formals(base::norm)$type))
sapply(nTyp, norm, x = h9)
stopifnot(exprs = { # 0-extent matrices:
    sapply(nTyp, norm, x = matrix(, 1,0)) == 0
    sapply(nTyp, norm, x = matrix(, 0,0)) == 0
})

來源

除了 norm = "2" 之外,LAPACK 例程 DLANGE

LAPACK 來自https://netlib.org/lapack/

參考

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

也可以看看

rcond 表示(倒數)條件號。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Compute the Norm of a Matrix。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。