Wie liefert der auf eine reale Matrix angewendete QR-Algorithmus komplexe Eigenwerte?

8

Ich bin ein Neuling in Eigenwertalgorithmen, aber etwas macht mich auf sich aufmerksam. Der QR-Algorithmus arbeitet mit reellen / komplexen Matrizen und erzeugt reelle / komplexe Eigenwerte. Es können jedoch keine komplexen Eigenwerte aus einer realen Matrix erzeugt werden . Hier ein vereinfachtes Beispiel, geschrieben in Julia und abgeleitet von hier und hier :

using LinearAlgebra
A = [7 3 4 11 -9 -2;
    -6 4 -5 7 1 12;
    -1 -9 2 2 9 1;
    -8 0 -1 5 0 8;
    -4 3 -5 7 2 10;
    6 1 4 -11 -7 -1]
M = copy(A)

for i=1:100
    global M
    Q,R = LinearAlgebra.qr(M);
    M=R*Q;
end

display(diag(M))
display(eigvals(A))

6-element Array{Float64,1}:
 -2.8415406888480472
  8.675063708533656
  3.658872985794657
  6.3411270142053695
  0.12201942568224483
  3.0444575546321087
6-element Array{Complex{Float64},1}:
  2.916761509842819 + 13.248032079355992im
  2.916761509842819 - 13.248032079355992im
  5.000000000000005 + 6.000000000000003im
  5.000000000000005 - 6.000000000000003im
 1.5832384901571723 + 1.4155521348117128im
 1.5832384901571723 - 1.4155521348117128im

Die Definition von Matrix A als komplex mit nur realen Komponenten macht keinen Unterschied.

Meine Fragen sind:

  • Was ist mein konzeptionelles Missverständnis zu diesem Thema?
  • Welchen Schritt mache ich falsch?
  • und wie kann man das beheben?

Vielen Dank

Noel Araujo
quelle
2
2×20.12201942568224483+3.0444575546321087=3.166476980314353521.5832384901571723=3.1664769803143447
3
Die reale Matrix kann komplexe Eigenwerte haben. Reelle und symmetrische Matrix können nur reelle Eigenwerte haben. math.stackexchange.com/questions/67304/…
R zu

Antworten:

13

AQRA=QRQTQRA .

R=(R110Rmm),
Rii

  • 1×1RiiA , oder
  • 2×2RiiA2+i2i

2×2Reigvals tut es.

n×nnA=(0110)±iR2×2 Blöcke (z. B. durch Überprüfen, ob ein subdiagonales Element größer als eine Toleranz ist) und wenn ja, Berechnen der Eigenwerte durch eine Formel.

eigenvalues2×2

using LinearAlgebra
A = [7 3 4 11 -9 -2;
    -6 4 -5 7 1 12;
    -1 -9 2 2 9 1;
    -8 0 -1 5 0 8;
    -4 3 -5 7 2 10;
    6 1 4 -11 -7 -1]
M = copy(A)

for i=1:100
    global M
    Q,R = LinearAlgebra.qr(M);
    M=R*Q;
end

eig = Complex{Float64}[]
let
    i=1
    N=size(M,1)
    while i<N   
        if abs(M[i+1,i])<1e-10             
            append!(eig,M[i,i])         
            i+=1         
        else             
            append!(eig,eigvals(M[i:i+1,i:i+1]))         
            i+=2         
        end                 
    end
    if length(eig)<N
       append!(eig,M[N:N,N:N])
    end                 
end       
Christian Clason
quelle
Ich glaube nicht, dass ich Ihren Standpunkt verstehe. In meinem Beispiel Matrix M, die die Eigenwerte enthält. Wie nehme ich an, um die komplexen Eigenwerte daraus zu erhalten? (Wenn jemand einen Quellcode bereitstellen könnte, wäre dies besser)
Noel Araujo
2
R
2
Ein Vorteil dieses Ansatzes besteht darin, dass jede vernünftige Methode zum Finden der Eigenwerte der 2x2-Blöcke sicherstellt, dass die komplexen Eigenwerte in komplexen konjugierten Paaren vorliegen, wie es die Theorie erfordert.
Brian Borchers
3
@NoelAraujo Sie sollten sich die vollständige Matrix ansehen M, nicht nur die Diagonale diag(M)(da sie Mweder diagonal noch dreieckig ist). Dann sehen Sie die 2x2 Blöcke. Sie können meinen Anspruch überprüfen mit z eigvals(M[1:2,1:2]). (@BrianBorchers Das ist ein ordentlicher Trick!)
Christian Clason
2
@KutalmisB Wenn Sie komplexe Eigenvektoren (anstelle einer realen Eigenbasis) möchten, ist der einfachste Weg wahrscheinlich Brians Ansatz, von Anfang an in komplexer Arithmetik zu arbeiten. Das Extrahieren komplexer Eigenvektoren aus der realen Schur-Faktorisierung kann durchgeführt werden, ist jedoch schwieriger. Sie können sehen, wie LAPACK es macht .
Christian Clason
5

Vergessen Sie den QR-Algorithmus und denken Sie daran, was Eigenwerte sind - sie sind die Wurzeln des charakteristischen Polynoms für die Matrix (siehe z . B. https://en.wikipedia.org/wiki/Characteristic_polynomial ). Für eine reelle Matrix der Ordnung N ist dies ein Polynom der Ordnung N mit reellen Koeffizienten. Reale Koeffizienten bedeuten jedoch nicht unbedingt echte Wurzeln. Möglicherweise haben Sie komplexe konjugierte Paare. Daher kann eine allgemeine reelle Matrix komplexe Eigenwerte haben.

Ian Bush
quelle
0

Ich habe diese Gleichung oft verwendet, um die Konvergenz zu testen. Die 11 in der ersten Reihe sollte -11 sein. Das Ausführen des QR-Algorithmus ohne Verschiebungen, genau wie die Matrix, für ungefähr 60 Iterationen führt zu einer Matrix, deren Eigenwerte fast genau auf der Diagonale angezeigt werden, selbst die komplexen. Die 5 + -6i befinden sich in den ersten beiden Zeilen, die 4 und 3 in den nächsten beiden und schließlich die 1 + -21 im unteren rechten Block. Denken Sie nicht, dass die komplexen Werte normalerweise klar erscheinen, ohne die 2x2-Matrixeigenwerte zu berechnen.

Bill Nee
quelle