mar*_*all 5 algorithm math matrix
我想从n个Bernoulli矩阵(即每个条目1或0,概率1/2)中均匀地采样所有奇异n.我当然可以从所有n个n伯努利矩阵中抽样,并拒绝那些非奇异的但是对于任何温和的n,这是非常低效的.
例如,在我测试的10000个随机100乘100矩阵中,没有一个是奇异的.
有没有一种有效的方法来做到这一点?
这是一些测试python代码来显示问题.
import numpy as np
iters = 10000
n = 100
count = 0
for i in xrange(iters):
A = np.random.randint(2, size = (n,n))
if (np.linalg.matrix_rank(A) < n):
count += 1
print count
Run Code Online (Sandbox Code Playgroud)
1月20日发布到https://mathoverflow.net/questions/155185/how-to-sample-uniformly-from-singular-matrices.
https://mathoverflow.net/questions/155185/how-to-sample-uniformly-from-singular-matrices 现在有一个建议的算法来解决这个问题.剩下的挑战是弄清楚如何实施它.
评论有点偏离,所以我将其发布作为答案:
这里有一篇论文:http://www.researchgate.net/publication/2729950_Efficient_Generation_of_Random_Nonsingular_Matrices/file/e0b4951d5a6fcc7e67.pdf,描述了如何生成非奇异矩阵,以及作为扩展的有限域上的奇异矩阵。由于在编程中实数在某种程度上是有限的,所以我认为它应该适用于这里。