scipy.linalg.

issymmetric#

scipy.linalg.issymmetric(a, atol=None, rtol=None)#

检查一个二维方阵是否对称。

参数:
andarray

大小为 (N, N) 的输入数组。

atolfloat,可选

绝对误差界限

rtolfloat,可选

相对误差界限

返回:
symbool

如果数组是对称的,则返回 True。

引发:
TypeError

如果不支持数组的 dtype,特别是 NumPy float16、float128 和 complex256 dtypes 进行精确比较。

另请参阅

ishermitian

检查一个二维方阵是否是埃尔米特的

注释

按照惯例,对于方形空数组,结果返回 True。复数值数组测试的是对称性而不是埃尔米特性(请参见示例)

不会扫描数组的对角线。因此,如果对角线上存在 infs、NaN 或类似的有问题的条目,它们将被忽略。然而,numpy.inf 将被视为一个数字,也就是说 [[1, inf], [inf, 2]] 将返回 True。另一方面,numpy.nan 永远不是对称的,例如,[[1, nan], [nan, 2]] 将返回 False

atol 和/或 rtol 设置为 时,则通过 numpy.allclose 执行比较,并且容差值会传递给它。否则,将通过内部函数执行与零的精确比较。因此,性能可能会根据数组的大小和 dtype 而提高或降低。如果给定了 atolrtol 中的一个,则另一个会自动设置为零。

示例

>>> import numpy as np
>>> from scipy.linalg import issymmetric
>>> A = np.arange(9).reshape(3, 3)
>>> A = A + A.T
>>> issymmetric(A)
True
>>> Ac = np.array([[1. + 1.j, 3.j], [3.j, 2.]])
>>> issymmetric(Ac)  # not Hermitian but symmetric
True