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;
[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;
[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;
[2,0,1]