gpt4 book ai didi

R如何生成随机但容易可逆的矩阵

转载 作者:行者123 更新时间:2023-12-02 07:33:47 25 4
gpt4 key购买 nike

我有一个困难的 R 计算要做,我可以选择 2 台计算机,称为 V 和 L,来运行代码。 V应该比L快,但我没有经历过。所以我决定测试一下。

作为一个简单的测试,我决定让他们将一个 3000*3000 的矩阵反转 500 次,并记录时间。

set.seed(123)
I=500
n=3000
time=matrix(NA,ncol=3,nrow=I)
for(i in 1:I){
t0<-proc.time()
x<-solve(matrix(runif(n^2),n))
mt1<-proc.time()
time[i,]<-(mt1-t0)[1:3]
}

问题是在特定的迭代过程中,它卡住了。我不知道为什么,但我怀疑这是因为生成的矩阵接近奇异。所以我想改进代码。我可以想到 3 种方式:

  1. 确保生成的矩阵很容易可逆。但是我该如何执行呢???当然,任何解决方案都需要计算成本低廉,否则练习将变得毫无意义。
  2. 如果 solve 耗时太长,
  3. 要求 R 跳过该迭代?但同样,我该怎么做呢?
  4. 给他们分配不同的计算任务,有什么建议吗?

最佳答案

随机矩阵以概率 1 可逆,这意味着在实践中,生成奇异(即不可逆)矩阵的概率非常小。

此外,从 R 用于反转矩阵的算法的角度来看,不存在“容易反转”的矩阵。该算法要么成功,要么确定矩阵是奇异的并且失败。但是没有任何情况下它会“非常努力”地尝试并花费很长时间来反转矩阵。这是一种确定性算法,它要么运行到 0 (或小于某个给定 epsilon 的值),在这种情况下如果失败,否则它不会。

您在哪个迭代中遇到问题?你确定你被困在矩阵的反转上,而不是像垃圾收集那样需要很长时间吗?

我无法重现您描述的问题。从随机种子 123 开始,我可以使用您的代码连续反转 500 个随机 3000x3000 矩阵,而不会出现任何明显的时序差异。你能找到一个随机种子直接生成“难以反转的矩阵”吗?

关于R如何生成随机但容易可逆的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19106015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com