MathNet.Numerics.LinearAlgebra.Double.DenseMatrix.Trace C# (CSharp) Method

Trace() public method

Computes the trace of this matrix.
If the matrix is not square
public Trace ( ) : double
return double
        public override double Trace()
        {
            if (_rowCount != _columnCount)
            {
                throw new ArgumentException(Resources.ArgumentMatrixSquare);
            }

            var sum = 0.0;
            for (var i = 0; i < _rowCount; i++)
            {
                sum += _values[(i * _rowCount) + i];
            }

            return sum;
        }

Usage Example

        /// <summary>
        /// Run example
        /// </summary>
        /// <seealso cref="http://en.wikipedia.org/wiki/Determinant">Determinant</seealso>
        /// <seealso cref="http://en.wikipedia.org/wiki/Rank_%28linear_algebra%29">Rank (linear algebra)</seealso>
        /// <seealso cref="http://en.wikipedia.org/wiki/Trace_%28linear_algebra%29">Trace (linear algebra)</seealso>
        /// <seealso cref="http://en.wikipedia.org/wiki/Condition_number">Condition number</seealso>
        public void Run()
        {
            // Format matrix output to console
            var formatProvider = (CultureInfo)CultureInfo.InvariantCulture.Clone();
            formatProvider.TextInfo.ListSeparator = " ";

            // Create random square matrix
            var matrix = new DenseMatrix(5);
            var rnd = new Random(1);
            for (var i = 0; i < matrix.RowCount; i++)
            {
                for (var j = 0; j < matrix.ColumnCount; j++)
                {
                    matrix[i, j] = rnd.NextDouble();
                }
            }

            Console.WriteLine(@"Initial matrix");
            Console.WriteLine(matrix.ToString("#0.00\t", formatProvider));
            Console.WriteLine();

            // 1. Determinant
            Console.WriteLine(@"1. Determinant");
            Console.WriteLine(matrix.Determinant());
            Console.WriteLine();

            // 2. Rank
            Console.WriteLine(@"2. Rank");
            Console.WriteLine(matrix.Rank());
            Console.WriteLine();

            // 3. Condition number
            Console.WriteLine(@"2. Condition number");
            Console.WriteLine(matrix.ConditionNumber());
            Console.WriteLine();

            // 4. Trace
            Console.WriteLine(@"4. Trace");
            Console.WriteLine(matrix.Trace());
            Console.WriteLine();
        }