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


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)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。