文档

symamd

对称的近似最小程度排列

语法

p = symamd (S)
p = symamd(年代,旋钮)
[p,统计]= symamd (…)

描述

p = symamd (S)对称正定矩阵年代,返回排列向量p这样S (p, p)往往有一个稀疏的柯列斯基比年代。找到的命令年代,symamd构造一个矩阵这样spones (M *米)= spones (S),然后计算p = colamd (M)。的symamd函数也可能适合对称不定矩阵。

年代必须广场;只有严格的下三角部分是引用。

p = symamd(年代,旋钮)在哪里旋钮是一个标量。如果年代n——- - - - - -n与多行和列旋钮* n条目删除命令之前,去年在输出排列有序p。如果旋钮参数不存在,那么旋钮= spparms (“wh_frac”)

[p,统计]= symamd (…)产生可选的向量统计数据提供的数据排序和矩阵的有效性年代

统计(1)

忽视了密集的或空的行数symamd

统计(2)

密集的或空的列所忽略symamd

统计数据(3)

数量的垃圾收集上执行所使用的内部数据结构symamd(大致的大小8.4 * nnz(下三角阵(S, 1)) + 9 n整数)

(4)统计数据

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

(5)统计数据

最右边的列索引无序或包含重复的条目,或0如果没有这样的列的存在

统计数据(6)

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

统计(7)

重复和无序的行索引

尽管如此,MATLAB®内置函数生成有效的稀疏矩阵,一个用户可以使用MATLAB构造一个无效的稀疏矩阵并将其传递给C或Fortran apisymamd。由于这个原因,symamd验证年代是有效的:

  • 如果指数连续出现两次或两次以上相同的列,symamd忽略了重复的条目,继续处理,提供的信息重复的条目统计(4)

  • 如果行索引列的顺序,symamd类内部的副本矩阵的每一列年代(但不修复输入矩阵年代),继续处理,并提供信息的无序条目统计(4)

  • 如果年代是无效的任何其他方式,symamd不能继续下去。它打印一个错误消息,并返回输出参数(p统计数据)。

定是紧随其后的是一个对称消去树后序。

例子

全部折叠

这是一个比较反向Cuthill-McKee和最小程度上巴基球中提到的例子symrcm参考页面。

B = bucky + 4 * speye (60);r = symrcm (B);p = symamd (B);R = B (R, R);S = B (p, p);次要情节(2、2、1),间谍(R, 4)、标题(“B (r, r)”)次要情节(2、2、2),间谍(S, 4)、标题(“B (s, s)”)次要情节(2、2、3),间谍(胆固醇(R), 4)、标题(“胆固醇”(B (r, r)))次要情节(2、2、4),间谍(胆固醇(S), 4)、标题(“胆固醇”(B (s, s)))

尽管这是一个很小的问题,这两个序是典型的行为。RCM产生一个矩阵的窄带宽带来了柯列斯基在几乎完全分解。最低程度上产生一个结构与大块连续的0不填写在分解。因此,最低程度排序需要更少的时间和存储的分解。

引用

代码的作者symamdStefan i Larimore和蒂莫西·a·戴维斯(davis@cise.ufl.edu),佛罗里达大学。算法是与约翰·吉尔伯特施乐帕克研究中心,和埃斯蒙德Ng,橡树岭国家实验室。佛罗里达大学的稀疏矩阵算法研究:https://www.cise.ufl.edu/research/sparse/

之前介绍过的R2006a