scipy.linalg.qr_multiply¶
- scipy.linalg.qr_multiply(a, c, mode='right', pivoting=False, conjugate=False, overwrite_a=False, overwrite_c=False)[源代码]¶
计算QR分解并将Q与矩阵相乘。
计算分解
A = Q R
其中Q是酉/正交的,R是上三角形。将q与向量或矩阵c相乘。- 参数
- a(M,N),类似数组
输入数组
- carray_like
要乘以的输入数组
q
。- mode{‘左’,‘右’},可选
Q @ c
如果mode为“Left”,则返回c @ Q
如果mode为“right”,则返回。C的形状必须适合于矩阵乘法,如果模式是“左”,min(a.shape) == c.shape[0]
,如果模式为“正确”,a.shape[0] == c.shape[1]
。- pivoting布尔值,可选
因子分解是否应该包括显示等级的QR分解的旋转,请参阅QR的文档。
- conjugate布尔值,可选
Q是否应该是复共轭的。这可能比显式共轭更快。
- overwrite_a布尔值,可选
中的数据是否被覆盖(可能会提高性能)
- overwrite_c布尔值,可选
c中的数据是否被覆盖(可能会提高性能)。如果使用此参数,则c必须足够大才能保存结果,即
c.shape[0]
=a.shape[0]
如果模式为“左”。
- 退货
- CQndarray
的产品
Q
和c
。- R(K,N),ndarray
产生的QR因子分解的R数组,其中
K = min(M, N)
。- P(n,)ndarray
整数透视数组。仅在以下情况下返回
pivoting=True
。
- 加薪
- LinAlgError
QR分解失败时引发。
注意事项
这是LAPACK例程的接口
?GEQRF
,?ORMQR
,?UNMQR
,以及?GEQP3
。0.11.0 新版功能.
示例
>>> from scipy.linalg import qr_multiply, qr >>> A = np.array([[1, 3, 3], [2, 3, 2], [2, 3, 3], [1, 3, 2]]) >>> qc, r1, piv1 = qr_multiply(A, 2*np.eye(4), pivoting=1) >>> qc array([[-1., 1., -1.], [-1., -1., 1.], [-1., -1., -1.], [-1., 1., 1.]]) >>> r1 array([[-6., -3., -5. ], [ 0., -1., -1.11022302e-16], [ 0., 0., -1. ]]) >>> piv1 array([1, 0, 2], dtype=int32) >>> q2, r2, piv2 = qr(A, mode='economic', pivoting=1) >>> np.allclose(2*q2 - qc, np.zeros((4, 3))) True