Ejemplo n.º 1
0
        // Function to calculate and store inverse, returns false if  Matrix is singular
        public MatrixSlow Inverse()
        {
            int N = InnerMatrix.GetUpperBound(0) + 1;

            double[,] inverse = new double[N, N];

            // Find determinant of A[][]
            double det = Determinant(InnerMatrix, N);

            if (det == 0)
            {
                throw new Exception("Singular Matrix, can't find its inverse");
            }

            // Find adjoint
            double[,] adj = Adjoint(InnerMatrix);

            // Find Inverse using formula "inverse(A) = adj(A)/det(A)"
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    inverse[i, j] = adj[i, j] / det;
                }
            }

            return(MatrixSlow.CreateWithArray(inverse));
        }
Ejemplo n.º 2
0
        public MatrixSlow Transpose()
        {
            double[,] transpose = new double[_Column, _Row];

            for (int i = 0; i < _Row; i++)
            {
                for (int j = 0; j < _Column; j++)
                {
                    transpose[j, i] = InnerMatrix[i, j];
                }
            }

            return(MatrixSlow.CreateWithArray(transpose));
        }