コード例 #1
0
        /// <summary>
        /// Calculates the inverse of matrix. Returns null if non-invertible.
        /// </summary>
        public virtual Matrix Invert()
        {
            var inverse = MatrixFunctions.Invert(this.InnerMatrix);

            if (inverse == null)
            {
                return(null);
            }
            return(new Matrix(inverse));
        }
        // TODO: Test
        /// <summary>
        /// Creates projection matrix for the specified subspace.
        /// </summary>
        public static double[,] CreateProjectionMatrix(double[,] subspace)
        {
            var subspaceTranspose = MatrixFunctions.Transpose(subspace);

            double[,] value = MatrixFunctions.Multiply(subspaceTranspose, subspace);

            value = MatrixFunctions.Invert(value);

            value = MatrixFunctions.Multiply(value, subspaceTranspose);

            value = MatrixFunctions.Multiply(subspace, value);

            return(value);
        }