Rozkład QR (QR decomposition)

0

Mam algorytm, który przeprowadza rozkład QR dla macierzy. Wyniki co do modułu są ok ale nie zgadzają się znaki (+ zamiast - i na odwrót). Nie mam pojęcia, gdzie może być błąd. Z góry dzięki za pomoc.

void QR(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];
    }
}

0

Powiedz coś więcej jak to Liczysz, gdzie jest Gram - Schmidt? Sprawdzasz czy macierz nie jest singularna?

EDIT: Widzę:) Sprawdziłem dla dwóch macierzy i daje mi dobre wyniki...

1 użytkowników online, w tym zalogowanych: 0, gości: 1