ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

amd

近似最小次数の置換

構文

P = amd(A)
P = amd(A,opts)

説明

P = amd(A) は、スパース行列 C = A + A' に対して、列が最小次数による並べ替えベクトルを近似したものを返します。コレスキー分解では、C(P,P) または A(P,P) の方が、C または A よりもまばらになる傾向があります。関数 amd は、symamd よりも処理が高速で、関数 symamd よりも返される順列が優れている傾向があります。行列 A は正方でなければなりません。A が非スパース行列の場合、amd(A) は、amd(sparse(A)) と同じです。

P = amd(A,opts) では、並べ替えの追加オプションを使用できます。opts 入力は、以下に示す 2 つのフィールドをもつ構造体です。必要なフィールドのみを設定します。

  • dense — 密と考慮される状態を示す非負のスカラー値。A が n 行 n 列の場合、A + A'max(16,(dense*sqrt(n))) エントリを超える行と列は、「密」と見なされ、順列で無視されます。これらの行と列は、出力置換の最後に置かれます。このオプションが存在しない場合、このフィールドの既定値は 10.0 です。

  • aggressive — アグレッシブ アブソープションを制御するスカラー値。このフィールドが非ゼロ値に設定されている場合、アグレッシブ アブソープションが実行されます。このオプションが存在しない場合、これが既定の設定になります。

MATLAB® ソフトウェアは、アセンブリ ツリー ポスト順列を実行します。これは、通常、消去ツリー ポスト順列と同じです。使用される近似度合い更新により、また、「密」と見なされる行と列はポスト順列には関係しないため、必ずしも同じとは限りません。しかし、続いて実行する chol 操作に適しているので、正確な消去ツリー ポスト順列が必要な場合は以下のコードを使用できます。

P = amd(S);
C = spones(S)+spones(S'); 
[ignore, Q] = etree(C(P,P));
P = P(Q);

S が既に対称である場合は、2 行目の C = spones(S)+spones(S') を省略します。

この例は、スパース行列を構成し、2 つのコレスキー因子を計算します。この一方はオリジナル行列で、もう一方は amd によりあらかじめ並べ替えが行われているオリジナル行列です。あらかじめ並べ替えが行われているコレスキー因子が、その元の順序での行列分解と比較して、どのくらいまばらになるかに注意してください。

A = gallery('wathen',50,50);
p = amd(A);
L = chol(A,'lower');
Lp = chol(A(p,p),'lower');

figure;
subplot(2,2,1);    spy(A);
title('Sparsity structure of A');

subplot(2,2,2); spy(A(p,p));
title('Sparsity structure of AMD ordered A');

subplot(2,2,3); spy(L);
title('Sparsity structure of Cholesky factor of A');

subplot(2,2,4); spy(Lp);
title('Sparsity structure of Cholesky factor of AMD ordered A');

set(gcf,'Position',[100 100 800 700]);

参考

| | |

この情報は役に立ちましたか?