<< qdpow QD: 32 bytes decimal arithmetics qdrand >>

DD_QD (MuPAT) >> DD_QD (MuPAT) > QD: 32 bytes decimal arithmetics > qr

qr

QR factorization of a QD matrix

Syntax

[Q, R] = qr(A)

Parameters

A

matrix of QD real numbers, of size [m,n].

Q

Orthogonal matrix of QD real numbers, of size [m,m].

R

upper Right triangular matrix of QD real numbers, of size [m,n] = size(A).

Description

[Q,R]= qr(A) computes the matrices Q and R such that A = Q*R, with Q orthogonal, and R upper-Right triangular.

Examples

Square input matrix:

A = qdrand(3,3)
[Q,R] = qr(A)
Q'*Q     // Q orthogonal
Q*R - A
--> A = qdrand(3,3)
 A  = 
[d1]
   0.6744698   0.2367841   0.8287412
   0.9152874   0.7015344   0.3161073
   0.028486    0.1202527   0.5305191
[d2] 10^-17 *
   1.640597   -0.2982776   1.8937044
   4.7801543  -5.3886078   0.2948024
  -0.0866402  -0.3056266   0.6539004
[d3] 10^-34 *
   9.2600373   0.8368638   8.5577923
  -8.6402125  -14.758006  -0.109292 
  -0.0023412   1.0305      0.2138737
[d4] 10^-51 *
   25.767596   0.3439711  -35.969429
   56.108312  -69.010269   0.4279924
  -0.010919    3.5944152   1.3115704


--> [Q,R] = qr(A)
 R  = 
[d1]
  -1.1373091  -0.7080176  -0.7591624
   0.         -0.247768    0.2248517
   0.          0.         -0.6643045
[d2] 10^-17 *
  -10.804238   1.2040685  -2.8589822
   0.          1.2657967  -0.8216278
   0.          0.         -3.6599586
[d3] 10^-34 *
  -19.301747   2.4665605  -28.301214
   0.         -4.7654354  -3.8427116
   0.          0.          4.9568623
[d4] 10^-51 *
   63.015136  -6.9150735   22.641026
   0.         -31.756367   1.6983272
   0.          0.          8.3776666

 Q  = 
[d1]
  -0.59304     0.738992   -0.3196786
  -0.8047833  -0.5316812   0.2638918
  -0.0250468  -0.4137704  -0.9100367
[d2] 10^-17 *
   0.4723805  -4.8932887  -2.3383947
  -0.1250943   1.2879175   0.387895 
  -0.1676178  -0.6446533   2.2015095
[d3] 10^-34 *
  -3.1201395   28.63755    14.857217
  -0.4783138   0.228468    0.0035934
  -0.3751341   3.6522336   7.8505864
[d4] 10^-51 *
  -18.082799  -74.785685  -18.170933
   0.4497962  -0.1707274  -0.017484 
   1.6422523   7.858092   -80.851926

   
--> Q'*Q     // Q orthogonal
 ans  =
[d1]
   1.   0.   0.
   0.   1.   0.
   0.   0.   1.
   
[d2] 10^-17 *
   0.   0.   0.
   0.   0.   0.
   0.   0.   0.
   
[d3] zeros(3,3)
[d4] zeros(3,3)

--> Q*R - A
 ans  =
[d1] 10^-64 *
  -0.6172119   0.4376863  -5.0326509
  -0.0949557   0.284867    3.8108384
   0.0093194  -0.0593473  -8.2477908
[d2] zeros(3,3)
[d3] zeros(3,3)
[d4] zeros(3,3)

Rectangular input matrix:

A = qdrand(3,4)
[Q,R] = qr(A)
Q'*Q     // Q orthogonal
(Q*R)(2), A(2)
(Q*R)(1:$-1,:) - A
--> A = qdrand(3,4)
 A  = 
[d1]
   0.025871    0.2413538   0.2893728   0.3454984
   0.5174468   0.5064435   0.0887932   0.7064868
   0.3916873   0.4236102   0.6212882   0.5211472
[d2] 10^-17 *
  -0.0924012   0.5787125   2.0737583   0.7253082
  -1.5854307  -5.4430809   0.3560689  -3.1813871
  -2.2888826   0.9501206  -3.1495401   0.4583247
[d3] 10^-34 *
  -0.630647   -2.9446788   4.4190639  -0.7377624
  -2.1015986   9.4105055  -3.629774   -5.6435068
  -1.6176924   5.7156986  -14.931267  -1.5105702
[d4] 10^-51 *
  -5.1663189  -19.009761  -39.773168   3.9272681
   4.0770955  -25.115063  -20.69295   -40.244413
  -10.359079  -29.836918   49.48939   -8.2666715


--> [Q,R] = qr(A)
 R  = 
[d1]
  -0.6494917  -0.6685603  -0.4569463  -0.8909036
   0.          0.2172772   0.3336651   0.3052483
   0.          0.         -0.396847    0.0565813
   
[d2] 10^-17 *
  -0.9183674   4.0863942   0.5246183   1.3400133
   0.         -0.3118598   1.4280393   0.6187622
   0.          0.         -1.2854773  -0.3282915
   
[d3] 10^-34 *
   7.1565659   9.9115492   2.756013   -7.3313577
   0.          0.3002421  -11.93012    2.9081976
   0.          0.          4.7812511   1.1232049

[d4] 10^-51 *
   36.453962  -78.332762  -0.4709708   20.104321
   0.         -1.6776815  -26.866888  -4.9235185
   0.          0.         -29.109985   5.7078902


 Q  = 
[d1]
  -0.0398327   0.9882458   0.1475928
  -0.796695   -0.1205612   0.5922348
  -0.6030675   0.0939961  -0.7921328
   0.          0.          0.       
[d2] 10^-17 *
  -0.0947659  -3.8210273  -0.4146059
  -0.3772909   0.2168924   0.9494928
  -0.2265137  -0.3053764  -0.4491638
   0.          0.          0.       
[d3] 10^-34 *
   0.1521926  -4.416197    0.5529143
   0.1815863  -1.1499104   3.0882364
   0.8058953   0.4462959  -0.1152056
   0.          0.          0.       
[d4] 10^-51 *
  -0.4732434  -19.136316   0.9216502
   0.5295538  -7.6458796   15.242305
  -3.6577173  -2.288692    0.351394 
   0.          0.          0.       

--> Q'*Q     // Q orthogonal
 ans  =
[d1]
   1.   0.   0.
   0.   1.   0.
   0.   0.   1.
   
[d2] 10^-17 *
   0.   0.   0.
   0.   0.   0.
   0.   0.   0.
   
[d3] zeros(3,3)
[d4] zeros(3,3)


--> (Q*R)(2), A(2)
 ans  =
   0.025871    0.2413538   0.2893728   0.3454984
   0.5174468   0.5064435   0.0887932   0.7064868
   0.3916873   0.4236102   0.6212882   0.5211472
   0.          0.          0.          0.       

 ans  =
   0.025871    0.2413538   0.2893728   0.3454984
   0.5174468   0.5064435   0.0887932   0.7064868
   0.3916873   0.4236102   0.6212882   0.5211472


--> (Q*R)(1:$-1,:) - A 
 ans  =
[d1] 10^-64 *
  -0.0534126   0.593473    0.6646897   1.4836825
   0.4035616   0.0474778  -0.3323449  -0.1899114
   0.6172119  -0.1899114   1.2344238   0.2255197

[d2] zeros(3,4)
[d3] zeros(3,4)
[d4] zeros(3,4)

See Also

Authors

Copyright (C) 2011 - Tsubasa Saito Copyright (C) 2018 - Samuel GOUGEON

Report an issue
<< qdpow QD: 32 bytes decimal arithmetics qdrand >>