MATLAB Function Reference    

symamd

対称近似最小度合いの置換

表示

詳細

p = symamd(S) は、対称正定行列 S に対して、S(p,p) が、S よりも、よりスパースなコレスキファクタをもつ傾向になる置換ベクトル p を戻します。S に関する並びを見つけるには、symamd が、spones(M'*M) = spones (S) を満足する行列 M を作成して、p = colamd(M) を計算します。関数 symamd は、対称非正定行列に対しても、機能します。

S は、スパースである必要があります。厳密な意味で下三角部のみを参照してください。

knobs は、スカラです。S が、nn 列の行列の場合、knobs*n 要素以上の行や列は、並べ代えの前に除去され、最後に、出力される並べ替えられた行列 p の後に加えます。パラメータ knobs が存在しない場合、knobs = spparms('wh_frac') となります。

stats は、オプションのベクトルで、行列 S の並びや妥当性についてのデータを与えます。

stats(1)
symamd で無視される密、または、空行の数
stats(2)
symamd で無視される密、または、空列の数
stats(3)
symamd で使われる内部データ構造に適用されるガーベージ補正(garbage collections)の数(凡そ、8.4*nnz(tril(S,-1)) + 9n の整数)
stats(4)
行列が正しい場合、0、その他の場合、1
stats(5)
ソートされていないものや、コピーされた要素をもつ右側の列インデックス、または、対象となる列が存在しない場合、0 です。
stats(6)
Last seen duplicate or out-of-order row index in the column index given by stats(5), または、対象となる列が存在しない場合、0 です。
stats(7)
Number of duplicate and out-of-order row indices

MATLAB 組み込み関数は、正しいスパース行列を作成しますが、ユーザは、MATLAB C または Fortran API を使って、正しくないスパース行列を作り、symamd に転送することもできます。このため、symamd は、S が正しいものであることを確認しておく必要があります。

並びは、対称消去ツリーポストの並びに従います。

参考

colamd, colmmd, colperm, symmmd, symrcm


  switch symbfact