Ejemplo n.º 1
0
        /// <summary>
        /// Находит Частное от деления многочленов
        /// </summary>
        /// <param name="A">Делимое</param>
        /// <param name="B">Делитель</param>
        /// <returns>Частное</returns>
        public static Polynomial Run(Polynomial A, Polynomial B)
        {
            int        i        = A.Values.Length - B.Values.Length + 1;
            Polynomial Chastnoe = new Polynomial(new Rational[i]);
            Rational   E;

            while (A.Values.Length >= B.Values.Length)                                       // Выполняется пока можно делить(т.е. пока степень Делимого >= степ. Делителя)
            {
                E = Q_8.Run(P_5.Run(A), P_5.Run(B));                                         //Находим коэфициент частного(Е), который будем умнажать на делитель
                Chastnoe.Values[i - 1] = E;                                                  // записываем в частное коэфициент
                A = P_2.Run(A, P_4.Run((P_3.Run(B, E)), A.Values.Length - B.Values.Length)); // Вычитаем из Делимого произведение Е на Делитель. И заменяем предыдущее Делимое полученным.
                i--;
            }
            return(Chastnoe);
        }
Ejemplo n.º 2
0
        /// <param name="A">Делимое</param>
        /// <param name="B">Делитель</param>
        /// <returns>Остаток</returns>
        public static Polynomial Run(Polynomial A, Polynomial B)
        {
            int        i = A.Values.Length;
            Polynomial C = new Polynomial(new Rational[i]);

            C = A;
            Rational E;

            while (A.Values.Length >= B.Values.Length) // Выполняется пока можно делить(т.е. пока степень Делимого >= степ. Делителя)
            {
                E = Q_8.Run(P_5.Run(A), P_5.Run(B));   //Находим коэфициент частного(Е), который будем умнажать на делитель
                C = P_4.Run((P_3.Run(B, E)), A.Values.Length - B.Values.Length);
                A = P_2.Run(A, C);                     // Вычитаем из Делимого произведение Е на Делитель. И заменяем предыдущее Делимое полученным.
            }
            return(A);                                 // После цикла получили многочлен который не делится на Делитель(т.е. остаток)
        }