python – 检查Numpy中的矩阵是否对称!

我正在尝试使用参数(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

虽然我不断得到一个轴没有定义消息,所以我很确定它根本不起作用……我想通过的测试是:

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)

任何帮助表示赞赏,谢谢!

你可以简单地使用allclose

def check_symmetric(a, tol=1e-8):
 return numpy.allclose(a, a.T, atol=tol)

进群:960410445 即可获取数十套PDF!

猜你喜欢

转载自blog.csdn.net/qq_42156420/article/details/86654991