本文简要介绍 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。