Algoritm QR

Algoritmul QR  este o metodă numerică în algebră liniară pentru rezolvarea completă a problemei cu valori proprii, adică găsirea tuturor valorilor proprii și vectorilor proprii ai unei matrice . A fost dezvoltat la sfârșitul anilor 1950 independent de V. N. Kublanovskaya și J. Francis.

Algoritm

Fie A  o matrice reală pentru care dorim să găsim valori proprii și vectori. Punem A 0 = A . La pasul k (începând de la k = 0), se calculează descompunerea QR A k = Q k R k , unde Q k  este o matrice ortogonală (adică Q k T = Q k −1 ) și R k  este o matrice superioară matrice triunghiulara . Atunci definim A k +1 = R k Q k .

observa asta

adică toate matricele A k sunt similare , adică valorile lor proprii sunt egale.

Fie toate diagonalele minore ale matricei A să fie nedegenerate . Apoi secvența matricelor A k at converge în formă către forma celulară triunghiulară drept corespunzătoare celulelor cu valori proprii de același modul. [unu]

Pentru a obține vectorii proprii ai matricei, trebuie să înmulțiți toate matricele Q k .

Algoritmul este considerat stabil din punct de vedere computațional , deoarece este produs prin transformări de similaritate ortogonală.

Demonstrație pentru o matrice definită pozitivă simetrică

Presupunem că valorile proprii ale unei matrice pozitiv-definite A sunt ordonate în ordine descrescătoare:

Lăsa

iar S  este o matrice compusă din vectori proprii ai matricei A . Apoi, matricea A poate fi scrisă ca o descompunere spectrală

Să găsim o expresie pentru puterile matricei originale în termenii matricilor Q k și R k . Pe de o parte, prin definiția algoritmului QR:

Aplicând recursiv această relație, obținem:

Prin introducerea următoarei notații:

primim

Pe de altă parte:

Echivalând părțile corecte ale ultimelor două formule, obținem:

Să presupunem că există o descompunere LU a matricei S T :

apoi

Înmulțim de la dreapta cu matricea inversă lui U și apoi cu matricea inversă lui Λ k :

Se poate arăta că

Pentru că fără pierdere a generalității, putem presupune că există unități pe diagonala matricei L , așadar

Denota

în plus, matricea P k este triunghiulară superioară, ca produsul dintre matricele triunghiulare superioare și diagonale.

Astfel, noi am dovedit că

.

Din unicitatea descompunerii QR rezultă că dacă produsul dintre o matrice ortogonală și triunghiulară converge către o matrice ortogonală, atunci matricea triunghiulară converge către matricea de identitate . Din cele spuse rezultă că

Adică, matricele S k converg către matricea de vectori proprii ai matricei A .

pentru că

apoi

Trecând la limită, obținem:

Deci, am demonstrat că algoritmul QR ne permite să rezolvăm problema completă a valorilor proprii pentru o matrice simetrică pozitiv-definită.

Implementarea algoritmului QR

În anumite condiții, succesiunea de matrice converge către o matrice triunghiulară, descompunerea Schur a unei matrice . În acest caz, valorile proprii ale matricei triunghiulare sunt situate pe diagonala acesteia, iar problema găsirii valorilor proprii este considerată rezolvată. În testele de convergență, nu este practic să se solicite zerouri exacte în partea zero a unei matrice, dar se poate folosi teorema cercului Gershgorin , care stabilește limite de eroare.

În starea inițială a matricei (fără transformări suplimentare), costul iterațiilor este relativ mare. Costul algoritmului poate fi redus prin conversia mai întâi a matricei în forma unei matrice Hessenberg superioară (costul de obținere care prin metoda bazată pe transformarea Householder este estimat ca operații aritmetice), apoi folosind o secvență finită de ortogonale. transformări de similaritate. Acest algoritm este oarecum similar cu descompunerea QR pe ​​două fețe. (În descompunerea QR obișnuită, matricea de reflecție Householder este înmulțită cu originalul doar în stânga, în timp ce în cazul utilizării formei Hessenberg, matricea de reflexie este înmulțită cu originalul atât în ​​stânga, cât și în dreapta.) Găsirea descompunerii QR a matricei superioare Hessenberg este evaluată ca operații aritmetice. Datorită faptului că forma matricei Hessenberg este aproape triunghiulară superioară (are un singur element subdiagonal care nu este egal cu zero), este posibil să se reducă imediat numărul de iterații necesare pentru convergența algoritmului QR .

Dacă matricea originală este simetrică, matricea superioară Hessenberg este, de asemenea, simetrică și, prin urmare, tridiagonală. Întreaga secvență de matrice are aceeași proprietate . În acest caz, costul procedurii este estimat ca operații aritmetice folosind o metodă bazată pe transformarea Householder. Găsirea descompunerii QR a unei matrice tridiagonale simetrice este evaluată ca operații.

Rata de convergență depinde de gradul de separare a valorilor proprii, iar în implementarea practică, „schimbările” sunt folosite explicit sau implicit pentru a îmbunătăți separarea valorilor proprii și pentru a accelera convergența. În forma sa tipică pentru matricele simetrice, algoritmul QR găsește cu acuratețe o valoare proprie (reducerea dimensiunii matricei) în una sau două iterații, făcând această abordare atât eficientă, cât și robustă.

Implementarea implicită a algoritmului QR

În practica modernă de calcul, algoritmul QR este implementat folosind versiunea sa implicită, care simplifică adăugarea de „schift” multiple. Inițial, matricea este redusă la forma matricei superioare Hessenberg , la fel ca în versiunea explicită. Apoi, la fiecare pas, prima coloană este transformată printr-o transformare de similitudine a gospodăriei de dimensiuni joase cu prima coloană (sau ), unde este un polinom de grad care determină strategia „deplasărilor” (de obicei , unde și sunt două valori proprii ). a submatricei reziduale 2×2, acestea sunt așa-numitele deplasări duble implicite). Apoi sunt efectuate transformări succesive ale dimensiunii Householder pentru a readuce matricea de lucru la forma matricei Hessenberg superioare.

Note

  1. Metode numerice / N. S. Bakhvalov, N. P. Zhidkov, G. M. Kobelkov. - Ed. a 3-a. - M. : BINOM, Laboratorul de cunoștințe, 2004. - S. 321. - 636 p. — ISBN 5-94774-175-X .

Link -uri