QR

计算矩阵的 QR 分解。

bool  QR(

  matrix&  Q,     // 具有正交列的矩阵

  matrix&  R      // 上三角矩阵

   );

参数

Q

[输出]  具有正交列的矩阵。 当模式=“完成”时,结果是一个正交/酉矩阵,这取决于 a 是否是实数/复数。 在这种情况下,行列式可以是 +/- 1。 如果输入数组中的维数大于 2,则返回拥有上述属性的矩阵堆栈。

R 键

[输出]  上三角矩阵。

返回值

成功时返回 true,否则返回 false。

举例

//---  A*x = b

  matrix A = {{0, 1}, {1, 1}, {1, 1}, {2, 1}};

  Print("A \n", A);

  vector b = {1, 2, 2, 3};

  Print("b \n", b);

//--- A = Q*R

  matrix q, r;

  A.QR(q, r);

  Print("q \n", q);

  Print("r \n", r);

  matrix qr=q.MatMul(r);

  Print("qr \n", qr);

  /*

  A

  [[0,1]

  [1,1]

  [1,1]

  [2,1]]

  b

  [1,2,2,3]

  q

  [[0.4082482904638631,-0.8164965809277259,-1.110223024625157e-16,-0.4082482904638631]

  [0.4625425214347352,-0.03745747856526496,0.7041241452319315,0.5374574785652647]

  [-0.5374574785652648,-0.03745747856526496,0.7041241452319316,-0.4625425214347352]

  [-0.5749149571305296,-0.5749149571305299,-0.09175170953613698,0.5749149571305296]]

  r

  [[-1.224744871391589,-0.2415816237971962]

  [-1.22474487139159,-1.466326495188786]

  [1.224744871391589,1.316496580927726]

  [1.224744871391589,0.2415816237971961]]

  qr

  [[-1.110223024625157e-16,1]

  [1,0.9999999999999999]

  [1,1]

  [2,1]]

  */