简单,用MATLAB编程。使用QR,特别是旋转QR。在M = [3 0 0 0 0;
0 0 1 0 0;
0 0 0 0 1;
0 2 0 0 0]
[Q,R,E] = qr(M)
Q =
1 0 0 0
0 0 1 0
0 0 0 1
0 1 0 0
R =
3 0 0 0 0
0 2 0 0 0
0 0 1 0 0
0 0 0 1 0
E =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 0 1
0 0 0 1 0
E的前4列表示要使用的M列,即[1,2,3,5]列。如果你想要M的列,只需形成乘积M*E
^{pr2}$
顺便说一句,用det来判断矩阵是否是奇异的,绝对是最糟糕的方法。在
改用rank。在
从本质上讲,除非你理解为什么det是一件坏事,而且你选择使用它,尽管事实如此,否则你实际上永远不应该在MATLAB中使用det。在