r语言 - 矩阵不作为正定传递



我有一个4x4矩阵,我认为应该通过正定,但是使用is.positive.definite(),它正在评估为假。当我使用nearPD()来计算最接近的正定矩阵时,得到的矩阵计算结果为is.positive.definite()的正定矩阵,但看起来是一样的。

矩阵看起来像这样

 1 1 0 0
 1 1 0 0
 0 0 1 1
 0 0 1 1

其中x'Mx应该等于(x1+x2)^2 + (x3+x4)^2这似乎满足正定条件。

无论如何,这里是代码。有人知道我在这里遗漏了什么吗?

library(Matrix)
library(matrixcalc)
D = rbind(c(1,1,0,0),c(1,1,0,0),c(0,0,1,1),c(0,0,1,1))
##evaluates false
is.positive.definite(D)
d = nearPD(D)$mat
d = matrix(d, nrow = 4)
## looks the same as D
d
##but evaluates to positive definite
is.positive.definite(d)

这个矩阵不是正定的。从维基百科:

在线性代数中,对于n个实数的每个非零列向量z,如果zTMz是正的,则称对称n × n实矩阵M是正定的。

考虑向量(-1,1,-1,1)。非零且只包含实数

但(-1+1)^2+(-1+1)^2=0,不大于0。所以这个矩阵不是正定的。然而,矩阵是正半定的

相关内容

  • 没有找到相关文章

最新更新