科尔珀姆
基于非零计数的稀疏列置换
句法
J = Colperm(S)
描述
J = Colperm(S)
生成排列矢量j
这样的列S(:,J)
根据非零条目计数的增加进行排序。这有时可作为LU分解的预订。在这种情况下使用lu(s(:,j))
。
如果s
是对称的,然后j
=
colperm(S)
产生置换j
这样的行和列都S(J,J)
根据非零条目计数的增加进行排序。如果s
是积极的,这有时可以作为cholesky分解的预订。在这种情况下使用chol(S(J,J))
。
例子
这n
-经过-n
箭头矩阵
a = [一个(1,n);一个(n-1,1)Speye(N-1,N-1)]
具有完整的第一行和列。它的分解,lu(a)
,几乎完全饱满。该声明
j = colperm(a)
返回j
=
[2:n
1]
。所以A(J,J)
将完整的行和列发送到底部和后部,以及lu(a(j,j))
具有与一种
本身。
另一方面,Bucky Ball示例,
B = Bucky
每个行和列中完全具有三个非零元素,因此j = colperm(b)
是身份置换量,完全没有帮助以随后的因素来减少填充。
算法
该算法涉及每一列中非齐率的计数的一种。