Exemple #1
0
        public Matrix Cofactor()
        {
            List <Vector> vectors = new List <Vector>();

            for (int i = 0; i < ColumnLength; i++)
            {
                List <float> entries = new List <float>();

                for (int j = 0; j < RowLength; j++)
                {
                    Matrix cofactorMatrix = Copy();
                    cofactorMatrix.DeleteRowVector(i);
                    cofactorMatrix.DeleteColumnVector(j);

                    float cofactor = cofactorMatrix.Determinant();
                    cofactor *= ((-1) ^ (i + j));

                    entries.Add(cofactor);
                }

                vectors.Add(new Vector(entries));
            }

            return(new Matrix(vectors));
        }
Exemple #2
0
        public float Determinant()
        {
            if (!IsSquare)
            {
                throw new ArithmeticException("Cannot compute the determinant of a non-square matrix");
            }

            if (RowLength == 2 && ColumnLength == 2)
            {
                //Det = ad - bc
                return(this[0][0] * this[1][1] - this[0][1] * this[1][0]);
            }
            else
            {
                float det = 0;
                for (int i = 0; i < RowLength; i++)
                {
                    float scalar = this[0][i];

                    Matrix reducedMatrix = Copy();
                    reducedMatrix.DeleteRowVector(0);
                    reducedMatrix.DeleteColumnVector(i);

                    det += ((-1) ^ i) * scalar * reducedMatrix.Determinant();
                }

                return(det);
            }
        }