2012-05-01 6 views
4

正の半限定マトリックスの行列式が0に等しい可能性はありますか?私のケースではゼロになるでしょう。私は対角要素がゼロでない対角行列を持っています。この行列の行列式を計算しようとすると0になるのですが、それはどうしてですか?正の半限定マトリックスの決定子

+0

この2つの個別の質問はありますか? 1つは正定値行列、もう1つは対角行列です。あなたは例を挙げることができますか? –

答えて

6

定義によって、半正定値行列はゼロに等しい固有値を有していてもよく、その決定は、したがって、今、ゼロ

ことができるので、私はあなたが文で何を意味するかを見ることができない、

私は対角要素がゼロでない対角行列を持っています。計算しようとするとき...

行列が対角であり、対角要素のすべての要素がゼロでない場合、行列式は非ゼロでなければなりません。コンピュータで計算している場合は、アンダーフローに注意してください。 対角要素の積の代わりに対数の総和を考えることができます

+0

はいこれは、対角要素が非ゼロに等しい対角行列です。それでも行列式は0となります –

+1

@rajansthapit:あなたの質問に例を追加してください。 –

7

これが決定基の計算が決して良い考えではない理由です。ええ、私は知っています。あなたの本、先生、またはあなたの上司はそうするように言った。彼らはおそらく間違っていた。どうして?決定子は縮尺の悪い獣です。行列式を効率的に計算しても(多くのアルゴリズムでもそれができません)、ほとんどの場合、行列式を必要としません。

この単純な正定行列を考えてみましょう。

A = eye(1000); 

行列式は何ですか。私も気にする必要はありません。それは1です。しかし、あなたが主張するならば...

det(A) 
ans = 
    1 

OK、そうです。その行列全体に小さな定数0.1などを単純に乗算するとどうでしょうか。決定子は何ですか?すでに決定要因を知っているので、気にする理由はないと言うかもしれません。これはちょうどdet(A)* 0.1^1000なので、1e-1000でなければなりません。

ここで何が間違っていましたか?これが失敗した場合、私たちは浮動小数点演算で作業していたことを忘れてしまいました。 MATLABのdoubleのダイナミックレンジは本質的にのみになるので、

realmin 
ans = 
     2.2250738585072e-308 

小さい数値はゼロになります - アンダーフローです。とにかく、行列式を計算するときのほとんどの時間、私たちは間違った理由でこれをやっています。行列が特異であるかどうかを調べるためにテストする必要がある場合は、detではなくrankまたはcondを使用します。

関連する問題