7

対称でなければならないランダム行列を生成したい。

私はこれを試しました:

matrix(sample(0:1, 25, TRUE), 5, 5)

しかし、それは必ずしも対称的ではありません。

どうやってやるの?

4

4 に答える 4

8

もう 1 つの非常に興味深い機会は、次の数学的事実に基づいています。A が何らかの行列の場合、A にその転置を掛けたものは常に対称です。

> A <- matrix(runif(25), 5, 5)
> A %*% t(A)
         [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 1.727769 1.0337816 1.2195505 1.4661507 1.1041355
[2,] 1.033782 1.0037048 0.7368944 0.9073632 0.7643080
[3,] 1.219551 0.7368944 1.8383986 1.3309980 0.9867812
[4,] 1.466151 0.9073632 1.3309980 1.3845322 1.0034140
[5,] 1.104135 0.7643080 0.9867812 1.0034140 0.9376534
于 2014-11-17T10:28:42.507 に答える
5

パッケージを使用したくない場合:

n=3
x <- matrix(rnorm(n*n), n) 
ind <- lower.tri(x) 
x[ind] <- t(x)[ind] 
x 
于 2014-11-15T16:46:56.707 に答える