测试矩阵是否为对称矩阵或反对称矩阵?

1 投票
1 回答
13695 浏览
提问于 2025-04-19 04:34

我正在做一个Python的实验练习。我写了代码,但我不知道怎么测试一个矩阵是否是对称矩阵或斜对称矩阵。具体问题有: 1. 如何测试一个矩阵是对称的还是斜对称的? 2. 我该如何使用断言来确保这个矩阵是一个方阵? 3. 有没有人能帮我检查一下我的代码? 谢谢!

def symmetric(X):
H = X.copy()
D = len(H)
F = len(H[0])
listx = []
listy = []   
for d in range(0,D):
    listx.append(0)
for f in range(0,F):
    listy.append(listx)
K = np.array(listy)
for i in range(0,D):
    for j in range(0,F):
        K[j][i] = H[i][j]
return K

def skewsymmetric(Y):
H = Y.copy()
D = len(H)
F = len(H[0])
listx = []
listy = []
R = -1
for d in range(0,D):
    listx.append(0)
for f in range(0,F):
    listy.append(listx)
K = np.array(listy)
for i in range(0,D):
    for j in range(0,F):
        K[j][i] = H[i][j]*R
return K

if __name__ == "__main__":
X = np.array([[20,120,200],[120,10,150],[200,150,30]])
Y = np.array([[0,1,-3],[-1,0,-2],[3,2,0]])
print "X =", X
print "Y =", Y
print "This is Symmetric matrix:", symmetric(X)
print "This is Skew-symmetric matrix:", skewsymmetric(Y)

1 个回答

7

有一种简单的方法可以用numpy来检查一个矩阵是否是对称的:

(arr.transpose() == arr).all()

如果你需要检查它是否是反对称的,那么只需要在比较时把第二个“arr”的符号改一下:

(arr.transpose() == -arr).all()

撰写回答