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