【问题标题】:Matrix doesn't pass as positive definite矩阵不作为正定传递
【发布时间】:2014-10-05 21:48:48
【问题描述】:

我有一个 4x4 矩阵,我认为它应该作为正定传递,但是使用 is.positive.defined(),它的评估结果为假。当我使用 nearPD() 计算最近的正定矩阵时,结果矩阵用 is.positive.defined() 计算为正定矩阵,但看起来相同。

矩阵是这样的

 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)

【问题讨论】:

  • 如果 x1 = -x2 且 x3 = x4 = 0,则二次形式的计算结果为 0。
  • 函数is.positive.definite定义在哪个包中?

标签: r matrix linear-algebra


【解决方案1】:

矩阵不是正定的。 From Wikipedia:

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

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

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

【讨论】:

  • 啊,谢谢。看起来 nearPD 正在稍微调整矩阵条目,以至于条目仍显示为 1。(D-d) 正在评估一些小数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多