scipy.linalg.
issymmetric#
- scipy.linalg.issymmetric(a, atol=None, rtol=None)#
检查一个方阵是否对称。
文档假设数组参数具有指定的“核心”形状。然而,此函数的数组参数可能在核心形状前额外添加“批处理”维度。在这种情况下,数组被视为一系列低维切片;有关详细信息,请参阅批处理线性操作。
- 参数:
- andarray
输入数组,大小为 (N, N)。
- atolfloat, optional
绝对误差范围
- rtolfloat, optional
相对误差范围
- 返回:
- symbool
如果数组对称,则返回 True。
- 引发:
- TypeError
如果数组的数据类型不受支持,特别是 NumPy float16、float128 和 complex256 数据类型用于精确比较。
另请参阅
ishermitian
检查一个方阵是否为 Hermitian 矩阵
备注
根据约定,对于方形空数组,结果返回 True。复数数组会测试其对称性而不是 Hermitian 性(参见示例)
数组的对角线不会被扫描。因此,如果对角线上有 infs、NaNs 或类似的问题条目,它们将被忽略。但是,
numpy.inf
将被视为一个数字,也就是说[[1, inf], [inf, 2]]
将返回True
。另一方面,numpy.nan
从不对称,例如,[[1, nan], [nan, 2]]
将返回False
。当
atol
和/或rtol
设置为非零值时,比较通过numpy.allclose
执行,并将容差值传递给它。否则,内部函数会执行与零的精确比较。因此,性能可能根据数组的大小和数据类型而提高或降低。如果给出atol
或rtol
中的一个,另一个会自动设置为零。示例
>>> 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