Example #1
0
        private double Determinant(SquareMatrix m)
        {
            double det = 0;

            if (m.Dimension == 2)
            {
                det = (m[0, 0] * m[1, 1]) - (m[1, 0] * m[0, 1]);
            }
            else if (m.Dimension == 3)
            {
                det = (m[0, 0] * m[1, 1] * m[2, 2]) + (m[0, 1] * m[1, 2] * m[2, 0]) + (m[0, 2] * m[1, 0] * m[2, 1])
                      - (m[0, 2] * m[1, 1] * m[2, 0]) - (m[0, 1] * m[1, 0] * m[2, 2]) - (m[0, 0] * m[1, 2] * m[2, 1]);
            }
            else
            {
                try
                {
                    SquareLUDecomposition lu = m.LUDecomposition();
                    det = lu.Determinant();
                }
                catch (Exception ex)
                {
                    det = 0;
                    MC.Other.Logger.LogLow(ex.Message);
                }
            }
            return(det);
        }
Example #2
0
        public void doWork()
        {
            matrix.Fill((j, i) => array[i, j]);
            SquareQRDecomposition qr = matrix.QRDecomposition();
            SquareLUDecomposition lu = matrix.LUDecomposition();

            ColumnVector qrresult = qr.Solve(vector);
            ColumnVector luresult = lu.Solve(vector);

            ColumnVector c6  = matrix.Column(6);
            RowVector    r2  = matrix.Row(2);
            SquareMatrix inv = matrix.Inverse();

            ColumnVector result = new ColumnVector(inv.Dimension);

            for (int i = 0; i < matrix.Dimension; ++i)
            {
                for (int j = 0; j < matrix.Dimension; ++j)
                {
                    result[i] += matrix[i, j] * qrresult[j];
                }
            }
        }