主要内容

科罗拉姆

列近似最小次排列

句法

P = Colamd

描述

P = Colamd返回稀疏矩阵的列近似最小度置换向量S..对于非对称矩阵S.S (: p)往往有较稀疏的LU因素S..粗心的分解(: p) *年代(:p)也倾向于稀疏而不是s'* s

旋钮是一个二元向量。如果年代m——- - - - - -N,然后是超过的行(旋钮(1))* n条目将被忽略。大于(旋钮(2))* m在订购之前删除条目,并在输出排列中排列P..如果是旋钮参数不存在,然后旋钮(1)=旋钮(2)= spparms('wh_frac')

统计是一个可选的矢量,它提供有关矩阵的排序和有效性的数据S.

统计(1)

被忽略的密集或空行数科罗拉姆

统计(2)

被忽略的密集列或空列的数量科罗拉姆

统计数据(3)

对内部数据结构执行的垃圾收集数科罗拉姆(大小大致2. n *n (S) + 4*m + 7*n整数)

统计数据(4)

0.如果矩阵有效,或1如果无效

统计数据(5)

未排序或包含重复项的最右侧列索引,或0.如果没有这样的列

统计数据(6)

最后一次看到的列索引中的重复或无序行索引统计数据(5), 或者0.如果没有存在这样的行索引

统计数据(7)

重复次数和oroundlow行索引

虽然是matlab.®内置函数生成有效的稀疏矩阵,用户可以使用MATLAB C或FORTRAN API构造无效的稀疏矩阵并将其传递给科罗拉姆.由于这个原因,科罗拉姆验证那个S.已验证:

  • 如果行索引在同一列中出现两个或更多次,则科罗拉姆忽略重复条目,继续处理,并提供有关重复条目的信息统计(4)

  • 如果列中的行索引无序,科罗拉姆对其内部副本的每列进行排序S.(但不修复输入矩阵S.),继续处理,并提供关于中的乱序条目的信息统计(4)

  • 如果S.以任何其他方式无效,科罗拉姆不能继续。它打印错误消息,并返回输出参数(P.统计) .

订购后跟排序后列消除树。

例子

全部收缩

稀疏矩阵和MATLAB®Demos目录的Harwell-Boeing集合包括测试矩阵West0479..它是由八级化学蒸馏塔的威斯特伯格导致的模型引起的订单479的矩阵。间谍情节显示了八个阶段的证据。这科罗拉姆命令争抢这种结构。

加载West0479.A = West0479;P = Colamd(a);图()子图(1,2,1),间谍(A,4),标题('一种')子图(1,2,2),间谍(a(:,p),4),标题('a(:,p)'

图中包含2个轴。标题为A的轴1包含一个类型为line的对象。标题为A(:,p)的轴2包含一个类型为line的对象。

将原始矩阵的LU分解的间谍曲线与重新排序的矩阵的间谍曲线进行比较,显示最小程度会通过2.8因子来缩短时间和存储要求。非零计数分别为15918和5920。

图()子图(1,2,1),间谍(Lu(a),4),标题('lu(a)')子图(1,2,2),间谍(lu(a(:,p)),4),标题('lu(a(:,p))'

图中包含2个轴。带有标题Lu(a)的轴1包含类型线的对象。具有标题Lu的轴2(a(:,p))包含类型线的对象。

参考文献

[1]代码的作者科罗拉姆是Stefan I. Larimore和Timothy A. Davis。该算法与John Gilbert,Xerox Parc和奥蒙德NG,奥蒙德国家实验室合作开发。稀疏矩阵算法研究:https://people.engr.tamu.edu/davis/research.html.

之前介绍过的R2006a