Faktoryzacja QR macierzy metodą Grama-Schmidta

dział ogólny

Faktoryzacja QR macierzy metodą Grama-Schmidta

Nowy postprzez michal_018 » wtorek, 25 grudnia 2012, 20:26

Witam

Posiadam następujący pseudo-kod:
Obrazek

Nie byłem nigdy dobry z matematyki i niestety nie bardzo rozumiem jego
działanie. Czy ktoś mógłby mi je wyjaśnić lub wskazać sposób implementacji ?

Dodam, że chodzi o rozkład QR macierzy metodą ortogonalizacji Grama-Schmidta.

Pozdrawiam.
Avatar użytkownika
michal_018
Bladawiec
Bladawiec
 
Posty: 1
Dołączył(a): wtorek, 25 grudnia 2012, 20:19
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: Dev C++
Gadu Gadu: 0
    Windows 7Firefox

Re: Faktoryzacja QR macierzy metodą Grama-Schmidta

Nowy postprzez Cyfrowy Baron » środa, 26 grudnia 2012, 10:39

KOD cpp:     UKRYJ  
#include <iostream.h>
#include <math.h>

const int n = 4;
void QR_decomposition(double A[n][n], double Q[n][n], double R[n][n])
 {
    int i, j, k;

    for (j=0; j < n; j++)
        for (i=0; i < n; i++) R[i][j] = 0.0;
       
    for (j=0; j < n; j++) {    
        for (i=0; i < j; i++)
            for (k=0; k < n; k++) R[i][j] = R[i][j] + A[k][j]*Q[k][i];
        for (k=0; k < n; k++) {
            Q[k][j] = A[k][j];
            for (i=0; i < j; i++) Q[k][j] = Q[k][j] - R[i][j]*Q[k][i];
        }    

        for (k=0; k < n; k++) R[j][j] = R[j][j] + Q[k][j]*Q[k][j];
        R[j][j] = sqrt(R[j][j]);
        for (k=0; k < n; k++) Q[k][j] = Q[k][j]/R[j][j];
    }
}

int main()
 {
    double A[n][n] = {{1,3,5,2},{-2,-1,4,5},{8,0,3,9},{5,1,8,0}};
    double Q[n][n], R[n][n];
    int i, j;
 
    QR_decomposition(A, Q, R);
   
    cout << " *** Macierz Q *** \n";
    for (i=0; i < n; i++) {
        for (j=0; j < n; j++) cout << Q[i][j] << "\t";
        cout << "\n";
    }
    cout << "\n *** Macierz R *** \n";
    for (i=0; i < n; i++) {
        for (j=0; j < n; j++) cout << R[i][j] << "\t";
        cout << "\n";
    }
    system("pause");
}




Wyjaśnienie.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 8 gości