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]