Esempio n. 1
0
    {/// <summary>
     /// Сложение многочленов
     /// </summary>
     /// <param name="A">Первый многочлен</param>
     /// <param name="B">Второй многочлен</param>
     /// <returns>Результат сложения двух многочленов</returns>
        public static Polynomial Run(Polynomial A, Polynomial B)
        {
            int        b    = Math.Max(A.Values.Length, B.Values.Length); //Максимальная длинна многочлена
            Polynomial resC = new Polynomial(new Rational[b]);            //Новая переменная для нового многочлена

            if (A.Values.Length >= B.Values.Length)
            {
                for (int i = 0; i < b; i++)
                {
                    resC.Values[i] = A.Values[i];                        //Копирование многочлена с большей степенью в новую переменную
                }                                                        //Для сохранения исходных данных
                for (int i = 0; i < B.Values.Length; i++)
                {
                    resC.Values[i] = Q_5.Run(resC.Values[i], B.Values[i]);    //Сложение коэфицентов при одинаковых степенях
                }
                return(resC.Clear());
            }
            else
            {
                for (int i = 0; i < b; i++)
                {
                    resC.Values[i] = B.Values[i];                        //Копирование многочлена с большей степенью в новую переменную
                }                                                        //Для сохранения исходных данных
                for (int i = 0; i < A.Values.Length; i++)
                {
                    resC.Values[i] = Q_5.Run(resC.Values[i], A.Values[i]);    //Сложение коэфицентов при одинаковых степенях
                }
                return(resC.Clear());
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Функция перемножает два исходных многочлена
        /// </summary>
        /// <param name="polynom1">Первый множитель-многочлен</param>
        /// <param name="polynom2">Второй множитель-многочлен</param>
        /// <returns>Многочлен, являющийся результатом перемножения</returns>
        public static Polynomial Run(Polynomial polynom1, Polynomial polynom2)
        {
            int        resDeg     = P_6.Run(polynom1) + P_6.Run(polynom2);       //Степень результирующего многочлена
            Polynomial resPolynom = new Polynomial(new Rational[resDeg + 1]);    //Результирующий многочлен

            for (int i = 0; i < resDeg + 1; i++)
            {
                resPolynom.Values[i] = new Rational("0");
            }
            for (int deg1 = 0; deg1 < polynom1.Values.Length; deg1++)                                      //Для каждого элемента первого могочлена
            {
                for (int deg2 = 0; deg2 < polynom2.Values.Length; deg2++)                                  //На каждый элемент второго многочлена
                {
                    Rational coefficient = Q_7.Run(polynom1.Values[deg1], polynom2.Values[deg2]);          //Находим произведение коэффициентов
                    resPolynom.Values[deg1 + deg2] = Q_5.Run(resPolynom.Values[deg1 + deg2], coefficient); //И прибавляем его к соответсвующему элементу
                }                                                                                          //Результирующего многочлена
            }
            return(resPolynom);
        }