14

Matlabで関数を使用します:

[V,D] = eig(C);

VとDは常に昇順でソートされていることがわかります。それはいつもそれが好きですか、それとも私が値を取得した後にそれらをソートする必要がVありDますか?

4

2 に答える 2

32

ソートされた昇順の値を保証したい場合は、追加の値を実行してください

if ~issorted(diag(D))
    [V,D] = eig(A);
    [D,I] = sort(diag(D));
    V = V(:, I);
end

好きなように並べ替えます。

または、次を使用しますeigs

[V,D] = eigs(A,size(A,1)-1)
于 2012-12-04T14:00:56.833 に答える
25

Vは、関連する固有値の順序に対応する場合を除いて、どの順序でもソートされません。しかし、おそらくあなたはそれを意味していませんでした。

固有値は降順である傾向がありますが、これはまったく保証されていません。最大のものは上にあるアルゴリズムから滴り落ちる傾向があるため、それらは整然としている傾向があります。Eigには、その事実を保証するための最後のソートはありません。

固有問題のシーケンスを取得するように設計された固有シャッフルツールを指摘し、固有値(および対応する固有ベクトル)を並べ替えて、シーケンスに沿って一貫性を保つようにします。

確かに降順でそれらが本当に必要な場合は、その事実を確認するためにソートを実行してください。ベクトルも同じ順序で並べ替えることを確認してください。

于 2012-12-04T13:58:19.690 に答える