Нахождение определителя Матрицы больше 3x3 C# - PullRequest
2 голосов
/ 07 мая 2020

В моем классе Matrix я смог написать свой собственный код для матриц размером до 3X3

class Matrix
{
    public float Determinant()
    {
        if (!isSquare())
            return 0;
        else if (_rows == 1)
            return this[0, 0];
        else if (_rows == 2)
        {
                       /* |a  b|
                          |c  d|*/
            float a = this[0, 0];
            float b = this[0, 1];
            float c = this[1, 0];
            float d = this[1, 1];

            return (a * d) - (b * c);
        }
        else
        {
            float sum = 0;
            int i = 0;
            for (int j = 0; j < _cols; j++)
            {
                //finding cofactor
                float a = (float)Math.Pow(-1, i + j);
                float b = (j  % 2 == 0) ? - a * this[i,j] : a * this[i,j];
                Matrix m = subMatrix(i, j);

                //getting determinant by recursion
                float d = m.Determinant();
                sum += b * d;
            }
            return sum;
        }
    }
}

Этот код перестает работать для матриц больше 3X3. Я читал похожие публикации других людей, но они мне не очень помогают. Мне не нужен ложный код, просто какое-то объяснение или, может быть, статья, в которой описывается, что мне нужно делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...