如何在MATLAB中生成一个非奇异的随机矩阵?
我知道可以使用矩阵行列式进行检查,但在阅读MATLAB determinant之后:
“使用det(X)== 0作为矩阵奇异性的测试仅适用于具有小整数条目的适度顺序矩阵。不建议使用abs(det(X))< =容差测试奇点,因为它很难选择正确的公差。函数cond(X)可以检查奇异和近似奇异矩阵。“
所以,如果我想生成一个大的随机矩阵(axb)a = 5000,b = 5000 ,该怎么办?
答案 0 :(得分:13)
随机生成的矩阵将是满秩(因此是可逆的,如果是正方形),概率为1:
A = randn(5000);
您可以使用min(svd(A))
进行检查,并验证最小的奇异值是否大于零。
这是一个众所周知的事实,但是here's an example paper if you want one。