0

この行列があるとしましょう

8 3 1 1 2 2 1 1 1 1 1 1 2 2 1 1 3
3 8 3 1 1 2 2 1 1 1 1 1 1 2 2 1 1
1 3 8 3 1 1 2 2 1 1 1 1 1 1 2 2 1
1 1 3 8 3 1 1 2 2 1 1 1 1 1 1 2 2
2 1 1 3 8 3 1 1 2 2 1 1 1 1 1 1 2
2 2 1 1 3 8 3 1 1 2 2 1 1 1 1 1 1
1 2 2 1 1 3 8 3 1 1 2 2 1 1 1 1 1
1 1 2 2 1 1 3 8 3 1 1 2 2 1 1 1 1
1 1 1 2 2 1 1 3 8 3 1 1 2 2 1 1 1
1 1 1 1 2 2 1 1 3 8 3 1 1 2 2 1 1
1 1 1 1 1 2 2 1 1 3 8 3 1 1 2 2 1
1 1 1 1 1 1 2 2 1 1 3 8 3 1 1 2 2
2 1 1 1 1 1 1 2 2 1 1 3 8 3 1 1 2
2 2 1 1 1 1 1 1 2 2 1 1 3 8 3 1 1
1 2 2 1 1 1 1 1 1 2 2 1 1 3 8 3 1
1 1 2 2 1 1 1 1 1 1 2 2 1 1 3 8 3
3 1 1 2 2 1 1 1 1 1 1 2 2 1 1 3 8

確認したい

  1. 非対角線は対称かどうか?(上記の行列では、これらは対称です)

  2. 要素は非対角(繰り返しなし)で発生しますか?-上記のマトリックスでは、これらの要素は1,2,3です。

  3. 対角線の要素は対称ですか?はいの場合、要素を印刷しますか?(上記のマトリックスの8のように)

4

2 に答える 2

2
# 1
all(mat == t(mat))
[1] TRUE

# 2
unique(mat[upper.tri(mat) | lower.tri(mat)])
[1] 3 1 2

# 3
if(length(unique(diag(mat))) == 1) print(diag(mat)[1])
[1] 8
于 2013-02-05T19:37:16.963 に答える
1
mat <- as.matrix(read.table('abbas.txt'))
isSymmetric(unname(mat))

'行列は、その'行名'と'列名'が同一である場合にのみ対称であることに注意してください。

unique(mat[lower.tri(mat)])

all(diag(mat) == rev(diag(mat)))
# I assume you mean the diagonal is symmetric when its reverse is the same with itself.
于 2013-02-05T19:39:05.870 に答える