Rezolvarea sistemelor#

Deși, cu siguranță, acesta NU este scopul principal al factorizării QR, ea poate fi folosită pentru a facilita rezolvarea rapidă a sistemelor de ecuații liniare. În paragrafele următoare, voi descrie ideea principală din spatele acestui șiretlic.

Explicația matematică#

Pornim de la sistemul de ecuații liniare \(A\bm{x}=\bm{b}\), unde \(A\in\mathbb{R}^{n\times n}\), \(\bm{x},\bm{b}\in\mathbb{R}^n\), cu \(n\in\mathbb{N}^*\).

Presupunând că \(A=QR\) este o descompunere QR validă a matricei \(A\) (folosind oricare metodă dintre cele descrise anterior), unde \(Q,R\in\mathbb{R}^{n\times n}\), atunci sistemul poate fi rescris astfel:

\[ A\bm{x}=\bm{b}\Leftrightarrow (QR)\bm{x}=\bm{b}\Leftrightarrow Q(R\bm{x})=\bm{b} \]

Dacă notăm \(\bm{y}=R\bm{x}\), se simplifică totul:

  • Ca să rezolvăm \(Q\bm{y}=\bm{b}\), avem în vedere faptul că matricea \(Q\) este ortogonală, și deci \(Q^{-1}=Q^T\), deci \(\bm{y}=Q^{-1}\bm{b}=Q^T\bm{b}\) se calculează imediat;

  • Ca să soluționăm \(R\bm{x}=\bm{y}\), putem folosi aceeași idee ca la rezolvarea sistemelor de ecuații liniare folosind factorizarea LU - cu alte cuvinte, acesta este un SST.

Cod ilustrativ#

Să considerăm funcția [Q, R] = QR(A) care calculează factorizarea QR a matricei \(A\) cunoscută (evident, aceasta poate fi orice implementare descrisă în subcapitolele anterioare). Totodată, fie funcția x = SST(A, b) care rezolvă rapid un sistem de ecuații liniare în care matricea coeficienților este superior-triunghiulară. Atunci, putem soluționa sisteme de ecuații liniare oarecare (de forma \(A\bm{x}=\bm{b}\)) prin funcția qr_solutie_sistem ce primește drept parametrii:

  • A - matricea coeficienților sistemului;

  • b - vectorul coloană din partea dreaptă a egalității \(A\bm{x}=\bm{b}\).

Funcția returnează x, vectorul coloană soluție a sistemului de ecuații liniare.

function x = qr_solutie_sistem(A, b)
    [Q, R] = QR(A);
    x = SST(R * x, Q' * b);
end

Licență#

The book "Metode Numerice", written by Valentin-Ioan Vintilă, is licensed under CC BY-NC-SA 4.0