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];
}
}