logo
ООП для Заоч / Пинчук Лозовская Программир на С

Void Gauss(double** a, double* b, double* X, unsigned n)

{ int i, j, k=0;

double D, R;

// прямий хід

for (i=0; i<N-1; i++)

{ // вибір головного елемента

D=fabs(A[i][i]);

k=i;

for (j=i+1; j<N; j++)

if (fabs(A[j][i])>D) { k=j; D=fabs(A[j][i]); }

// якщо потрібно, то поміняти місцями рядки

if (k!=i) { swp(A[k],A[i]); swp(B[k],B[i]);

// перетворення матриці у трикутну

R = 1./A[i][i];

for (k=i+1; k<N; k++)

{ D=A[k][i]*R;

for (j=i; j<N; j++) A[k][j]=A[k][j]-D*A[i][j];

B[k]=B[k]-D*B[i];

}

}

// зворотний хід

X[N-1] = B[N-1]/A[N-1][N-1];

for (i=(N-2); i>=0; i--)

{ D = 0.0;

for (j=i+1; j<N; j++) D += A[i][j]*X[j];

X[i] = (B[i]-D)/A[i][i];

}

}