我正在尝试使用参数 (a,tol=1e-8)
创建一个函数,它返回一个布尔值,告诉用户矩阵是否对称(对称矩阵等于其转置)。到目前为止我有:
def check_symmetric(a, tol=1e-8):
if np.transpose(a, axes=axes) == np.transpose(a, axes=axes):
return True
def sqr(s):
rows = len(s)
for row in sq:
if len(row) != rows:
return False
return True
if a != sqr(s):
raise ValueError
尽管我不断收到 axes isn't defined
消息,所以我很确定这根本不起作用……我想通过的测试是:
e = np.eye(4)
f = np.diag([1], k=3)
g = e[1:, :]
print(check_symmetric(e))
print(not check_symmetric(e + f))
print(check_symmetric(e + f * 1e-9))
print(not check_symmetric(e + f * 1e-9, 1e-10))
try:
check_symmetric(g)
print(False)
except ValueError:
print(True)
任何帮助表示赞赏,谢谢!
原文由 plshalp 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
allclose
将其与其转置进行简单比较