當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy linalg.matrix_balance用法及代碼示例

本文簡要介紹 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. ]])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.linalg.matrix_balance。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。