symamd
对称近似最小度置换
语法
p = symamd(S)
p = symamd(S,knobs)
[p,stats] = symamd(...)
说明
p = symamd(S)
(对于对称正定矩阵 S
)返回置换向量 p
,这样 S(p,p)
倾向于比 S
具有更稀疏的乔列斯基因子。要计算 S
的排序,symamd
构造一个矩阵 M
,这样 spones(M'*M) = spones (S)
,然后计算 p = colamd(M)
。symamd
函数也可能适用于对称非正定矩阵。
S
必须是方阵;仅引用严格下三角部分。
p = symamd(S,knobs)
,其中 knobs
为标量。如果 S
为 n
×n
,则排序前,将会删除包含多个 knobs*n
项的行和列,并最后在输出置换 p
中排序。如果 knobs
参数不存在,则 knobs = spparms('wh_frac')
。
[p,stats] = symamd(...)
生成可选的向量 stats
,后者提供有关矩阵 S
的排序和有效性的数据。
stats(1) |
|
stats(2) |
|
stats(3) | 对 |
stats(4) |
|
stats(5) | 未排序或包含重复项的最右侧列的索引,或者为 |
stats(6) | 由 |
stats(7) | 重复和无序行索引的数目 |
尽管 MATLAB® 的内置函数生成有效的稀疏矩阵,但用户可能会使用 MATLAB C 或 Fortran API 构造一个无效稀疏矩阵并将其传递给 symamd
。出于此原因,symamd
将验证 S
是否有效:
如果一个行索引在同一列中出现两次或以上,
symamd
将忽略重复项,继续处理,并提供有关stats(4:7)
中的重复项的信息。如果列中的行索引是无序的,
symamd
将对矩阵S
的内部副本的每列进行排序(但不会修复输入矩阵S
),继续处理,并提供有关stats(4:7)
中的无序项的信息。如果
S
始终无效,symamd
无法继续。将输出一条错误消息,并且不返回任何输出参量(p
或stats
)。
该排序后跟对称消去树后排序。
示例
参考
[1] Davis, Timothy A., John R. Gilbert, Stefan I. Larimore, and Esmond G. Ng. “Algorithm 836: COLAMD, a Column Approximate Minimum Degree Ordering Algorithm.” ACM Transactions on Mathematical Software 30, no. 3 (September 2004): 377–380. https://doi.org/10.1145/1024074.1024080.
扩展功能
版本历史记录
在 R2006a 之前推出