当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy linalg.qr_multiply用法及代码示例


本文简要介绍 python 语言中 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), 数组

输入数组

c array_like

要乘以 q 的输入数组。

mode {‘left’, ‘right’},可选

如果模式是‘left’,则返回Q @ c,如果模式是‘right’,则返回c @ Q。 c 的形状必须适合矩阵乘法,如果 mode 是 ‘left’, min(a.shape) == c.shape[0] ,如果 mode 是 ‘right’, a.shape[0] == c.shape[1]

pivoting 布尔型,可选

因式分解是否应包括rank-revealing qr 分解的旋转,请参阅 qr 的文档。

conjugate 布尔型,可选

Q是否应该是complex-conjugated。这可能比显式共轭更快。

overwrite_a 布尔型,可选

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

overwrite_c 布尔型,可选

c 中的数据是否被覆盖(可能会提高性能)。如果使用它,c 必须足够大以保持结果,即 c.shape[0] = a.shape[0] 如果模式为 ‘left’。

返回

CQ ndarray

Qc 的乘积。

R (K, N), ndarray

结果 QR 分解的 R 数组,其中 K = min(M, N)

P (N,) 数组

整数枢轴数组。仅在 pivoting=True 时返回。

抛出

LinAlgError

如果 QR 分解失败,则引发。

注意

这是 LAPACK 例程 ?GEQRF?ORMQR?UNMQR?GEQP3 的接口。

例子

>>> import numpy as np
>>> 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

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.qr_multiply。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。