【发布时间】:2019-08-28 14:39:27
【问题描述】:
我试图用数值测试矩阵及其转置的乘法是否真的生成了一个对称方阵。
下面是我使用的代码:
mat = np.array([[1,2,3],[1,0,1],[1,1,1],[2,3,5]])
mat2 = np.linalg.inv(np.matmul(np.transpose(mat),mat))
mat2
array([[ 1.42857143, 0.42857143, -0.85714286],
[ 0.42857143, 1.92857143, -1.35714286],
[-0.85714286, -1.35714286, 1.21428571]])
mat2 看起来是对称的。
但是,下面代码的结果让我很困惑:
np.transpose(mat2) == mat2
array([[ True, False, False],
[False, True, False],
[False, False, True]])
但是当我用 mat 做同样的过程时,结果和我预期的一样:
np.transpose(np.matmul(np.transpose(mat),mat)) == np.matmul(np.transpose(mat),mat)
array([[ True, True, True],
[ True, True, True],
[ True, True, True]])
这是否与计算问题有关?如果是这样,我如何证明非对角线元素是相同的?
【问题讨论】:
标签: python numpy matrix transpose