本文简要介绍 python 语言中 scipy.linalg.matrix_balance
的用法。
用法:
scipy.linalg.matrix_balance(A, permute=True, scale=True, separate=False, overwrite_a=False)#
计算行/列平衡的对角相似变换。
平衡尝试通过应用相似变换来均衡行和列 1 范数,以便矩阵条目的幅度变化反映到缩放矩阵。
此外,如果启用,则首先置换矩阵以隔离矩阵的上三角形部分,并且再次如果还启用缩放,则仅剩余子块经受缩放。
平衡矩阵满足以下等式
缩放系数近似为最接近的 2 次方,以避免舍入误差。
- A: (n, n) 数组
用于平衡的方形数据矩阵。
- permute: 布尔型,可选
用于定义 A 的排列是否也在缩放之前执行的选择器。
- scale: 布尔型,可选
用于打开和关闭缩放的选择器。如果为 False,则不会缩放矩阵。
- separate: 布尔型,可选
这从将转换的完整矩阵返回到两个单独的 1-D 排列和缩放数组的元组。
- overwrite_a: 布尔型,可选
这直接传递给 xGEBAL。本质上,将结果覆盖到数据中。它可能会提高空间效率。有关详细信息,请参阅 LAPACK 手册。默认情况下为 False。
- B: (n, n) 数组
平衡矩阵
- T: (n, n) 数组
一个可能置换的对角矩阵,其非零项是 2 的整数幂,以避免数值截断错误。
- scale, perm: (n,) 数组
如果
separate
关键字设置为 True 则代替上面的数组T
,缩放和置换向量作为一个元组单独给出,而不分配整个数组T
。
参数 ::
返回 ::
注意:
该算法对于特征值和矩阵分解特别有用,并且在许多情况下,它已经被各种 LAPACK 例程调用。
该算法基于 [1] 中众所周知的技术,并已针对特殊情况进行了修改。有关自 LAPACK v3.5.0 以来已实施的详细信息,请参阅 [2]。在此版本之前,存在一些极端情况,其中平衡实际上会使条件恶化。有关此类示例,请参见 [3]。
该代码是 LAPACK 用于矩阵平衡的 xGEBAL 例程系列的包装器。
参考:
[1]B.N. Parlett 和 C. Reinsch,“平衡用于计算特征值和特征向量的矩阵”,数值数学,第 13 卷(4),1969 年,DOI:10.1007/BF02165404
[2]R. 詹姆斯、J. 兰古、B.R. Lowery,“矩阵平衡和特征向量计算”,2014 年,arXiv:1401.5766
[3]D.S.沃特金斯。平衡有害的情况。电子。跨。数字。肛门,第 23 卷,2006 年。
例子:
>>> import numpy as np >>> from scipy import linalg >>> x = np.array([[1,2,0], [9,1,0.01], [1,2,10*np.pi]])
>>> y, permscale = linalg.matrix_balance(x) >>> np.abs(x).sum(axis=0) / np.abs(x).sum(axis=1) array([ 3.66666667, 0.4995005 , 0.91312162])
>>> np.abs(y).sum(axis=0) / np.abs(y).sum(axis=1) array([ 1.2 , 1.27041742, 0.92658316]) # may vary
>>> permscale # only powers of 2 (0.5 == 2^(-1)) array([[ 0.5, 0. , 0. ], # may vary [ 0. , 1. , 0. ], [ 0. , 0. , 1. ]])
相关用法
- Python SciPy linalg.matrix_power用法及代码示例
- Python SciPy linalg.matmul_toeplitz用法及代码示例
- Python SciPy linalg.minres用法及代码示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
- Python SciPy linalg.LaplacianNd用法及代码示例
- Python SciPy linalg.solve_circulant用法及代码示例
- Python SciPy linalg.polar用法及代码示例
- Python SciPy linalg.clarkson_woodruff_transform用法及代码示例
- Python SciPy linalg.rsf2csf用法及代码示例
- Python SciPy linalg.hessenberg用法及代码示例
- Python SciPy linalg.tril用法及代码示例
- Python SciPy linalg.triu用法及代码示例
- Python SciPy linalg.svd用法及代码示例
- Python SciPy linalg.ishermitian用法及代码示例
- Python SciPy linalg.invhilbert用法及代码示例
- Python SciPy linalg.factorized用法及代码示例
- Python SciPy linalg.lu_factor用法及代码示例
- Python SciPy linalg.SuperLU用法及代码示例
- Python SciPy linalg.lsqr用法及代码示例
- Python SciPy linalg.cho_factor用法及代码示例
- Python SciPy linalg.fractional_matrix_power用法及代码示例
- Python SciPy linalg.eig_banded用法及代码示例
- Python SciPy linalg.tanhm用法及代码示例
- Python SciPy linalg.orthogonal_procrustes用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.matrix_balance。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。