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


R isSymmetric 測試矩陣或其他對象是否對稱(厄米特)


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

說明

用於測試 object 是否對稱的通用函數。目前僅實現了矩陣方法,其中complex 矩陣Z 必須為“Hermitian”,isSymmetric(Z) 才為真。

用法

isSymmetric(object, ...)
## S3 method for class 'matrix'
isSymmetric(object, tol = 100 * .Machine$double.eps,
            tol1 = 8 * tol, ...)

參數

object

任何R目的; Amatrix為矩陣法。

tol

數值標量 >= 0。不考慮較小的差異,請參閱 all.equal.numeric

tol1

數值標量 >= 0。 isSymmetric.matrix() “預測試”第一行和最後幾行,以便快速檢測具有此容差的 ‘obviously’ 不對稱情況。將其設置為長度零將跳過預測試。

...

傳遞給方法的進一步參數;矩陣方法將它們傳遞給 all.equal 。如果對稱檢查允許 object 的行名稱和列名稱不同,請使用 check.attributes = FALSE

細節

默認情況下,matrix 方法在 eigen 內部使用,使用 all.equal 測試矩陣的對稱性直至舍入誤差。它可能並不適合所有情況。

請注意,隻有當 rownamescolnames 相同時,矩陣 m 才是對稱的。考慮使用unname(m)

邏輯指示 object 是否對稱。

例子

isSymmetric(D3 <- diag(3)) # -> TRUE

D3[2, 1] <- 1e-100
D3
isSymmetric(D3) # TRUE
isSymmetric(D3, tol = 0) # FALSE for zero-tolerance

## Complex Matrices - Hermitian or not
Z <- sqrt(matrix(-1:2 + 0i, 2)); Z <- t(Conj(Z)) %*% Z
Z
isSymmetric(Z)      # TRUE
isSymmetric(Z + 1)  # TRUE
isSymmetric(Z + 1i) # FALSE -- a Hermitian matrix has a *real* diagonal

colnames(D3) <- c("X", "Y", "Z")
isSymmetric(D3)                         # FALSE (as row and column names differ)
isSymmetric(D3, check.attributes=FALSE) # TRUE  (as names are not checked)

也可以看看

eigensymmetric 參數丟失時調用 isSymmetric

相關用法


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