【问题标题】:Create a random matrix with full rank [closed]创建一个满秩的随机矩阵[关闭]
【发布时间】:2016-03-13 20:42:51
【问题描述】:

对于我的一个项目,我想创建几个具有满秩的随机矩阵。有谁知道在 R 中执行此操作的快速方法或知道如何进行?

【问题讨论】:

  • 您需要证明您已尝试自己解决此问题,并描述您遇到的问题。这不是代码编写服务。

标签: r


【解决方案1】:

如果您生成一个包含 iid 元素且没有额外约束的矩阵,那么您极有可能得到一个满秩矩阵:

library(Matrix)
set.seed(101)
r <- replicate(1000,rankMatrix(matrix(rnorm(10000),100)))
table(r)  ## all values are equal to 100

(花更多时间在数学上的人可能能够证明这个矩阵空间内的降秩矩阵集实际上具有度量 0 ...)

【讨论】:

  • 为了不满秩,方阵的行列式必须为零。您可以将行列式编写为矩阵元素的函数f(a11,a12,...,)。行列式为零的所有矩阵的集合位于f=0 所在的表面。这个表面在矩阵元素的空间中测量为 0(如你所说)。
  • 如果 OP 出于某种实际目的需要一个满秩矩阵(也许他将不得不反转它),他可能需要担心数值不稳定性,因此接近 0 的行列式可能是个问题。尽管如此,一些随机重复应该很容易找到一个。