{/// <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()); } }
/// <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); }