有没有办法在MATLAB中生成N x N随机对角化矩阵?我试着如下:
N = 10;
A = diag(rand(N,N))
但它给了我一个N x 1矩阵。我还需要矩阵是对称的。
答案 0 :(得分:1)
假设您正在考虑实值矩阵:每个实对称矩阵都是diagonalizable。因此,您可以随机生成一些矩阵A
,例如使用A = rand(N, N)
,然后将其对称,例如由
A = A + A'
对于复杂矩阵,对角化的条件是矩阵为normal。如果A
是任意方形随机矩阵,则可以通过
A = A * A'
答案 1 :(得分:0)
所有全秩矩阵都可以通过SVD或特征分解进行对角化。
如果你想要一个随机对称矩阵......
N = 5
V = rand(N*(N+1)/2, 1)
M = triu(ones(N))
M(M==1) = V
M = M + tril(M.',-1)
@DavidEisenstat是对的。我试过他的榜样。对不起,这是虚假陈述。这是一个与您的情况特别相关的真实陈述,但不是一般的:随机矩阵几乎可以保证是可对角化的。