qr

语法

qr(obj, [mode='full'], [pivoting=false])

参数

obj 是一个矩阵。

mode 是一个字符串,表示返回信息的类型。它的取值可以是 "full", "economic", "raw" 或 "r"。默认值是 "full"。

pivoting 是一个布尔值,表示是否返回置换矩阵的秩显,默认值为 false。

详情

计算矩阵的 QR(正交三角)分解,将矩阵分解成一个标准正交矩阵 Q 与上三角形矩阵 R。若输入矩阵为 A,结果满足 A=Q*R。

假设 A 的行数为 m,列数为 n:

  • mode="full",返回矩阵 Q 与 R,形状分别为 m*m 和 m*n。

  • mode="economic",返回矩阵 Q 与 R,形状分别为 m*k 和 k*n,其中 k=min(m,n)。

  • mode="r",仅返回矩阵 R,形状为 m*n。

  • pivoting=true,返回结果还包含一个与输入矩阵列数相同长度的向量 P。P 为置换矩阵的秩显,表示置换矩阵中1所在列的位置。

例子

A = matrix([2,5,7,5], [5,2,5,4], [8,2,6,4]);

Q,R = qr(A);
Q;
#0 #1 #2 #3
-0.197066 0.903357 0.300275 0.234404
-0.492665 -0.418267 0.459245 0.609449
-0.68973 -0.02475 0.170745 -0.703211
-0.492665 0.091573 -0.818398 0.281284
R;
#0 #1 #2
-10.148892 -7.38997 -8.670898
0 3.922799 6.608121
0 0 1.071571
0 0 0
Q,R=qr(A,mode='economic');
Q;
#0 #1 #2
-0.197066 0.903357 0.300275
-0.492665 -0.418267 0.459245
-0.68973 -0.02475 0.170745
-0.492665 0.091573 -0.818398
R;
#0 #1 #2
-10.148892 -7.38997 -8.670898
0 3.922799 6.608121
0 0 1.071571
Q,T,R=qr(A,mode='raw');
R;
#0 #1 #2
-10.148892 -7.38997 -8.670898
0.41156 3.922799 6.608121
0.576184 0.3046 1.071571
0.41156 0.156539 0.900419
T;
// output
[1.197066,1.790053,1.104512]

R
#0 #1 #2
-10.148892 -7.38997 -8.670898
0 3.922799 6.608121
0 0 1.071571
Q,T,R,P = qr(A,mode='raw',pivoting=true);
Q;
#0 #1 #2
-10.954451 -8.033264 -8.215838
0.105516 -6.20215 -1.45111
0.316548 0.37699 -0.627918
0.211032 0.284188 0.936372
T;
// output
[1.730297,1.635478,1.065648]

R
#0 #1 #2
-10.954451 -8.033264 -8.215838
0 -6.20215 -1.45111
0 0 -0.627918
P;
// output
[2,0,1]