Ejemplo n.º 1
0
        //---------------------------------------------------------------------
        //      Gauss method solver
        //---------------------------------------------------------------------
        public static decimal[] gauss_solver(DMatrix A, decimal[] b)
        {
            int n = A.rows;
            decimal[] x = new decimal[n];
            decimal c = 0;

            // Forward (A to uptriangle form)
            for (int i = 0; i < n - 1; i++)
            {
                for (int j = i; j < n - 1; j++)
                {
                    c = A.M[j + 1, i] / A.M[i, i];

                    for (int k = 0; k < n; k++)
                        A.M[j + 1, k] = A.M[j + 1, k] - c * A.M[i, k];

                    b[j + 1] = b[j + 1] - c * b[i];
                }
            }

            // Backward (roots found)
            for (int i = n - 1; i >= 0; i--)
            {
                decimal sum = b[i];

                for (int j = n - 1; j >= i + 1; j--)
                    sum -= A.M[i, j] * x[j];

                x[i] = sum / A.M[i, i];
            }

            return x;
        }
Ejemplo n.º 2
0
        public static DMatrix operator -(DMatrix a, DMatrix b)
        {
            DMatrix c = new DMatrix(a.rows, a.columns);

            for (int i = 0; i < a.rows; i++)
            {
                for (int j = 0; j < a.columns; j++)
                    c.M[i, j] = a.M[i, j] - b.M[i, j];
            }

            return c;
        }
Ejemplo n.º 3
0
        public static DMatrix operator *(DMatrix a, decimal lambda)
        {
            DMatrix c = new DMatrix(a.rows, a.columns);

            for (int i = 0; i < a.rows; i++)
            {
                for (int j = 0; j < a.columns; j++)
                    c.M[i, j] = a.M[i, j]*lambda;
            }

            return c;
        }