本文簡要介紹 python 語言中 scipy.linalg.ordqz
的用法。
用法:
scipy.linalg.ordqz(A, B, sort='lhp', output='real', overwrite_a=False, overwrite_b=False, check_finite=True)#
具有重新排序的一對矩陣的 QZ 分解。
- A: (N, N) 數組
二維數組分解
- B: (N, N) 數組
二維數組分解
- sort: {可調用,‘lhp’, ‘rhp’, ‘iuc’, ‘ouc’},可選
指定是否應對上特征值進行排序。可以傳遞一個可調用函數,給定一個表示特征值
x = (alpha/beta)
的有序對(alpha, beta)
,返回一個布爾值,表示特征值是否應排序到左上角(True)。對於實數矩陣對,beta
是實數,而alpha
可以是複數,對於複數矩陣對,alpha
和beta
都可以是複數。可調用對象必須能夠接受 NumPy 數組。或者,可以使用字符串參數:‘lhp’ Left-hand plane (x.real < 0.0)
‘rhp’ Right-hand plane (x.real > 0.0)
‘iuc’ Inside the unit circle (x*x.conjugate() < 1.0)
‘ouc’ Outside the unit circle (x*x.conjugate() > 1.0)
使用預定義的排序函數,可以得到無限的特征值(即
alpha != 0
和beta = 0
) 被認為既不在左手平麵也不在右手平麵內,但被認為位於單位圓之外。對於特征值(alpha, beta) = (0, 0)
,預定義的排序函數全部返回False.- output: str {‘real’,'複雜'},可選
為實矩陣構造實數或複數 QZ 分解。默認為‘real’。
- overwrite_a: 布爾型,可選
如果為 True,則覆蓋 A 的內容。
- overwrite_b: 布爾型,可選
如果為 True,則覆蓋 B 的內容。
- check_finite: 布爾型,可選
如果為真,則檢查 A 和 B 的元素是有限數。如果 false 不檢查並將矩陣傳遞給底層算法。
- AA: (N, N) 數組
A 的廣義 Schur 形式。
- BB: (N, N) 數組
B 的廣義 Schur 形式。
- alpha: (N,) 數組
alpha = alphar + alphai * 1j。見注釋。
- beta: (N,) 數組
見注釋。
- Q: (N, N) 數組
左 Schur 向量。
- Z: (N, N) 數組
右 Schur 向量。
參數 ::
返回 ::
注意:
退出時,
(ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N
將是廣義特征值。ALPHAR(j) + ALPHAI(j)*i
和BETA(j),j=1,...,N
是複數 Schur 形式 (S,T) 的對角線,如果將 (A,B) 的實廣義 Schur 形式的 2×2 對角線塊進一步簡化為三角形形式,則會得到該複數 Schur 形式 (S,T)使用複雜的酉變換。如果 ALPHAI(j) 為零,則第 j 個特征值為實數;如果為正,則j
th 和(j+1)
st 特征值是複共軛對,ALPHAI(j+1)
為負。例子:
>>> import numpy as np >>> from scipy.linalg import ordqz >>> A = np.array([[2, 5, 8, 7], [5, 2, 2, 8], [7, 5, 6, 6], [5, 4, 4, 8]]) >>> B = np.array([[0, 6, 0, 0], [5, 0, 2, 1], [5, 2, 6, 6], [4, 7, 7, 7]]) >>> AA, BB, alpha, beta, Q, Z = ordqz(A, B, sort='lhp')
由於我們已經對左半平麵特征值進行了排序,因此負數排在第一位
>>> (alpha/beta).real < 0 array([ True, True, False, False], dtype=bool)
相關用法
- Python SciPy linalg.orthogonal_procrustes用法及代碼示例
- Python SciPy linalg.orth用法及代碼示例
- Python SciPy linalg.onenormest用法及代碼示例
- 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.use_solver用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.linalg.ordqz。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。