Метод Гаусса на C#

Пытаюсь реализовать на Windows Form метод Гаусса. Для этого пишу функцию Гаусса. Вроде бы все условия алгоритма выполнил - а в ответ мне выдают весь вектор Х равен 0 ? В чём причина ? Код:

private void GAUSS(double[,] A, double[] B, int N, double[] X)
    {
        for (int i = 0; i < (N - 1); i++)
        {
            k = i;
            R = Math.Abs(A[i, i]);
            for (int j = i + 1; j < N; j++)
            {
                if (Math.Abs(A[j, i]) >= R)
                {
                    k = j;
                    R = Math.Abs(A[j, i]);
                }
                if (R <= eps)
                {
                    MessageBox.Show("Система вироджена");
                    return;
                }
            }
            if (k != i)
            {
                for (int j = i; j < N; j++)
                {
                    R = A[k, j];
                    A[k, j] = A[i, j];
                    A[i, j] = R;
                }
                R = B[k];
                B[k] = B[i];
                B[i] = R;
            }
            R = A[i, i];
            B[i] = B[i] / R;

            for (int j = 1; j < N; j++)
            {
                A[i, j] = A[i, j] / R;
            }

            for (int k = i + 1; k < N; k++)
            {
                R = A[k, i];
                B[k] = B[k] - R * B[i];
                A[k, i] = 0;
                for (j = i + 1; j < N; j++)
                {
                    A[k, j] = A[k, j] - R * A[i, j];
                }
            }
            if (Math.Abs(A[N, N]) <= eps)
            {
                MessageBox.Show("Система вироджена");
                return;
            }
        }

        X[N-1] = B[N-1] / A[N-1, N-1];
        for (int i = N - 1; 0 <= i; i--)
        {
            R = B[i];
            for (int j = i + 1; j < N; j++)
            {
                R = R - A[i, j] * X[j];
            }
            X[i] = R;
        }
    }

Ответы (0 шт):