scipy.linalg.qz

scipy.linalg.qz(A, B, output='real', lwork=None, sort=None, overwrite_a=False, overwrite_b=False, check_finite=True)[源代码]

矩阵对的广义特征值的QZ分解。

一对n乘n矩阵(A,B)的QZ或广义Schur分解为:

(A,B) = (Q @ AA @ Z*, Q @ BB @ Z*)

其中,如果BB是具有非负对角线的上三角的,并且AA是上三角形的,或者对于实QZ分解,则AA,BB是广义Schur形式 (output='real' )挡路上三角形,带1x1和2x2区块。在这种情况下,1x1块对应于实广义特征值,而2x2块通过使bb的对应元素具有以下形式而被“标准化”::

[ a 0 ]
[ 0 b ]

并且AA和BB中对应的2×2块对将具有广义特征值的复共轭对。如果 (output='complex' )或A和B是复矩阵,Z‘表示Z的共轭转置,Q和Z是酉矩阵。

参数
A(n,N)类数组

要分解的二维数组

B(n,N)类数组

要分解的二维数组

output{‘real’,‘Complex’},可选

构造实矩阵的实或复QZ分解。默认值为“REAL”。

lwork整型,可选

工作数组大小。如果无或-1,则自动计算。

sort{无,可调用,‘LHP’,‘RHP’,‘IUC’,‘OUC’},可选

注意:此输入暂时禁用。改用ordqz。

指定是否应对上特征值进行排序。可以传递一个可调用函数,该函数在给定特征值的情况下返回一个布尔值,该布尔值表示是否应该将该特征值排序到左上角(True)。对于实数矩阵对,排序函数接受三个实数参数(alphar、alphai、beta)。本征值 x = (alphar + alphai*1j)/beta 。对于复数矩阵对或output=‘Complex’,排序函数接受两个复数参数(alpha、beta)。本征值 x = (alpha/beta) 。或者,可以使用字符串参数:

  • “lhp”左侧平面(x.real<0.0)

  • “rhp”右侧平面(x.real>0.0)

  • 单位圆内的‘iuc’(x*x.congiate()<1.0)

  • 单位圆外的‘ouc’(x*x.congiate()>1.0)

默认为无(不排序)。

overwrite_a布尔值,可选

是否覆盖中的数据(可能会提高性能)

overwrite_b布尔值,可选

是否覆盖b中的数据(可能会提高性能)

check_finite布尔值,可选

如果为true,则检查 AB 都是有限的数字。如果为False,则不进行检查,并将矩阵传递给基础算法。

退货
AA(N,N)ndarray

A的广义Schur形式。

BB(N,N)ndarray

B的广义Schur形式。

Q(N,N)ndarray

左舒尔矢量。

Z(N,N)ndarray

右边的舒尔矢量。

参见

ordqz

注意事项

Q相对于Matlab中的等价函数进行了转置。

0.11.0 新版功能.

示例

>>> from scipy import linalg
>>> rng = np.random.default_rng()
>>> A = np.arange(9).reshape((3, 3))
>>> B = rng.standard_normal((3, 3))
>>> AA, BB, Q, Z = linalg.qz(A, B)
>>> AA
array([[ 8.99591445e+00, -1.07917902e+01, -2.18309912e+00],
       [ 0.00000000e+00, -8.60837546e-01,  1.05063006e+00],
       [ 0.00000000e+00,  0.00000000e+00, -1.40584278e-15]])
>>> BB
array([[ 0.2058989 , -0.6007898 , -0.5771396 ],
       [ 0.        ,  1.6997737 , -1.12160842],
       [ 0.        ,  0.        ,  1.76304656]])
>>> Q
array([[ 0.10356118,  0.90697763, -0.40824829],
       [ 0.48575095,  0.31205664,  0.81649658],
       [ 0.86794072, -0.28286434, -0.40824829]])
>>> Z
array([[ 0.78900531,  0.16010775, -0.59315776],
       [-0.21754047, -0.83009894, -0.51343148],
       [ 0.57458399, -0.53413598,  0.62012256]])