maxframe.tensor.linalg.qr#

maxframe.tensor.linalg.qr(a, method='tsqr')[源代码]#

计算矩阵的 QR 分解。

将矩阵 a 分解为 qr,其中 q 是正交矩阵,r 是上三角矩阵。

参数:
  • a (array_like, shape (M, N)) -- 待分解的矩阵。

  • method ({'tsqr', 'sfqr'}, optional) -- 计算 QR 分解的方法,默认为 tsqr。TSQR 参见:A. Benson, D. Gleich, 和 J. Demmel. Direct QR factorizations for tall-and-skinny matrices in MapReduce architectures. IEEE International Conference on Big Data, 2013. http://arxiv.org/abs/1301.1071。FSQR 是适用于宽而矮矩阵的 QR 分解:A = [A1, A2, A3, ...],A1 可分解为 A1 = Q1 * R1,对于 A = Q * R,Q = Q1,R = [R1, R2, R3, ...],其中 A2 = Q1 * R2,A3 = Q1 * R3,...

返回:

  • q (Tensor of float or complex, optional) -- 列向量正交的矩阵。当 mode = 'complete' 时,结果是根据 a 是否为实数/复数决定的正交/酉矩阵。此时行列式可能是 +/- 1。

  • r (Tensor of float or complex, optional) -- 上三角矩阵。

抛出:

LinAlgError -- 如果分解失败。

备注

有关 QR 分解的更多信息,请参见:http://en.wikipedia.org/wiki/QR_factorization

示例

>>> import maxframe.tensor as mt
>>> a = mt.random.randn(9, 6)
>>> q, r = mt.linalg.qr(a)
>>> mt.allclose(a, mt.dot(q, r)).execute()  # a does equal qr
True