QR

행렬의 qr 인수분해를 계산

bool  QR(
  matrix&  Q,    // 정규 직교 열이 있는 행렬
  matrix&  R      // 상부 삼각 행렬
   );

매개 변수

Q

[out]  정규 직교 열이 있는 행렬. mode = 'complete'일 때 결과는 a가 실수/복소수인지 여부에 따라 직교/유니터리 행렬입니다. 이 경우 행렬식은 +/- 1이 될 수 있습니다. 입력 배열의 차원 수가 2보다 큰 경우 위의 속성을 가진 행렬 스택이 반환됩니다.

R key

【out】 상부 삼각 행렬.

반환값

성공하면 true를 반환하고 그렇지 않으면 false를 반환.

//---  A*x = b
  matrix A = {{01}, {11}, {11}, {21}};
  Print("A \n"A);
  vector b = {1223};
  Print("b \n"b);
//--- A = Q*R
  matrix qr;
  A.QR(qr);
  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]]
  */