文档

amd

近似最小度置换

句法

p = amd(a)
p = amd(a,opts)

描述

p = amd(a)返回稀疏矩阵的近似最小度置换矢量c = a + a'。Cholesky的分解C(p,p)或者应用程序)往往比C或者一个。这amd功能往往比Symamd,并且倾向于返回比Symamd。矩阵一个必须是正方形。如果一个是一个完整的矩阵,然后AMD(a)等同于AMD(稀疏(a))

p = amd(a,opts)允许重新排序的其他选项。这选择输入是一个结构,下面显示了两个字段。您只需要设置感兴趣的领域:

  • 稠密- 一个非负标量值,表明被认为是密度的值。如果a是n-n,则排行的行超过max(16,(密集*sqrt(n)))条目a + a'被认为是“密集”,在订购过程中被忽略。MATLAB®软件将这些行和列放置在输出排列中。如果此选项不存在,则此字段的默认值为10.0。

  • 挑衅的- 控制攻击吸收的标量值。如果将此字段设置为非零值,则执行侵略性吸收。如果此选项不存在,这是默认值。

MATLAB软件执行汇编树后排序,通常与消除树后订购相同。由于所使用的近似程度更新,而且“密集”行和列不参与后订单,这并不总是相同的。它非常适合随后的chol但是,如果您需要精确的消除树后订购,则可以使用以下代码:

p = amd(s);C = Spones(S)+Spones(S');[ignore,q] = eTree(c(p,p));p = p(q);

如果s已经对称,省略了第二行,C = Spones(S)+Spones(S')

例子

全部收缩

在使用矩阵之前和之后计算矩阵的cholesky因子amd检查对稀疏性的影响。

加载杠铃图稀疏矩阵,并在其上添加稀疏的身份矩阵,以确保其正确定。计算两个cholesky因素:原始矩阵之一和一个原始矩阵之一。amd

加载Barbellgraph.mata = a+speye(size(a));p = amd(a);l = chol(a,'降低');lp = chol(a(p,p),'降低');

绘制所有四个矩阵的稀疏模式。与基质在自然顺序中的因子相比,从预分级基质获得的cholesky因子比较稀疏。

图子图(2,2,1)间谍(a)标题(a)“原始矩阵A”)子图(2,2,2)间谍(a(p,p))标题('AMD订购了A')子图(2,2,3)间谍(L)标题(L)标题('cholesky因素)子图(2,2,4)间谍(LP)标题(LP)标题('AMD的Cholesky因素订购了A'