3

一般的な固有値の問題を解決するためのコードをいくつか書きました。現在、その結果を LAPACK のDSPGVX関数と比較しています。この例で作業しました。

だから私は4つの自動ベクトルを取得しました

{
 {-0.0319133, -0.265466, -0.713483,  0.64765},
 {-0.425628,  -0.520961, -0.714215,  0.193227},
 { 0.32702,    0.565845, -0.37129,  -0.659561},
 {-0.682699,  -0.056645,  0.0771025, 0.724409}
}

と自動値

{-2.22545, 1.12704, -0.454756, 0.100076}

私のコードと Mathematica の両方で、結果は一致します。

しかし、前のリンクでは、LAPACK から報告された自動ベクトルはまったく異なります。

 Eigenvalues
    -0.4548  0.1001
 Selected eigenvectors
          1       2
 1   0.3080  0.4469
 2   0.5329  0.0371
 3  -0.3496 -0.0505
 4  -0.6211 -0.4743

誰を信頼すればよいですか?

PSまた、自動値/自動ベクトルがA * x-lambda * B * x = 0を生成するため正しいことを確認しましたが、LAPACKの値はそうではありません。

4

3 に答える 3

2

LAPACK が間違った答えを出しているとあなたが考える理由がわかりませんが、私には問題ないように思えます。あなたが引用した4桁の小数を使用して、次のような残差(r = A * x - lambda * B * x)を取得します

ノルム (r1) = 1.5921e-04、ノルム (r2) = 6.0842e-05。

norm(A) = 1.2994 および norm(B) = 7.9874 であるため、これらの残差は非常に満足できるものに見えます。

DSPGVX によって生成された固有ベクトルは、次のように正規化されます。

ノルム(x'*B*x) = 1.

于 2012-03-13T10:25:09.670 に答える
1

DSGPVX は A*lambda = B*x*lambda; を解いているようです。Matlabのドキュメントは正しいですが、Matlabは「eig」を使用してDSGPVXソリューションを問題に提供します。私の推測では、これは DSGPVX ドキュメントのバグです。

>> a=[0.24 0.39 0.42 -0.16;0.39 -0.11 0.79 0.63;0.42 0.79 -0.25 0.48;-0.16 0.63 0.48 -0.03];
>> b=[4.16 -3.12 0.56 -0.1;-3.12 5.03 -0.83 1.09;0.56 -0.83 0.76 0.34;-0.1 1.09 0.34 1.18];
>> [v,d]=eig(a,b)

v =

   -0.0690    0.3080   -0.4469   -0.5528
   -0.5740    0.5329   -0.0371   -0.6766
   -1.5428   -0.3496    0.0505   -0.9276
    1.4004   -0.6211    0.4743    0.2510


d =

   -2.2254         0         0         0
         0   -0.4548         0         0
         0         0    0.1001         0
         0         0         0    1.1270

>> norm(a*v-b*v*d)

ans =

   1.5001e-15
于 2012-03-12T18:29:50.257 に答える
1

Lapack の結果は、コードと Mathematica によって生成された最後の 2 つの固有値に実際に対応しているように見えますが、下位ビットはかなり異なっています。対応するベクトルは非常に近く、スケーリングが異なるだけです。

明らかに、Mathematica の値がチェックアウトし、Lapack の値がチェックアウトしない場合、正しい答えを生成するものを信頼する必要があります。あなたの問題と、非常に不正確な答えを提供するLapackのアルゴリズムについて調査することは価値があるかもしれません.

于 2012-03-12T18:14:49.183 に答える