本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。