Функции для работы с полиномами
Для работы с полиномами имеется множество функций, по большей части достаточно очевидных для знакомого с математикой пользователя:
- Decompose [poly, x] – выполняет разложение полинома, если это возможно, на более простые полиномиальные множители;
- GroebnerBasis [ {poly1, poly2,…}, {x1, х2,…}] – возвращает список полиномов, которые образуют базис Гробнера для идеала, порожденного полиномами polyi;
- Polynomial-Division [p, q, x] – возвращает список частного и остатка, полученных делением полиномов р и q от х;
- PolynomialGCD [poly1, poly2,…] – возвращает наибольший общий делитель ряда полиномов poly1, poly2,… С опцией Modulus › p функция возвращает наибольший общий делитель по модулю простого числа р;
- PolynomialLCM[poly1, poly2,…] – возвращает наименьшее общее кратное полиномов poly1, poly2,… С опцией Modulus › p функция возвращает наименьшее общее кратное по модулю простого числа р;
- PolynomialMod [poly, m] – возвращает полином poly, приведенный по модулю m;
- PolynomialMod [poly, {m1, m2,…}] – выполняет приведение по модулю всех mi;
- PolynomialQ [expr, var] – возвращает значение True, если expr является полиномом от var, иначе возвращает False;
- PolynomialQ [expr, {varl,…}] – проверяет, является ли expr полиномом от vari;
- PolynomialQuotient [р, q, х] – возвращает частное от деления р и q как полиномов от х, игнорируя какой-либо остаток;
- PolynomialRemainder [р, q, х] – возвращает остаток от деления р на q как полиномов от х;
- Resultant [poly1, poly2, var] – вычисляет результат полиномов poly1 и poly2 по переменной var. С опцией Modulus › p функция вычисляет результат по модулю простого числа р.
Итак, работа с этими функциями, по существу, сводит операции с таким сложным видом символьных данных, как многочлены, к типовым алгебраическим операциям над обычными символьными переменными. Следующие примеры поясняют работу с полиномами:
P[x]: = a*x^3 + b*x^2 + c*x + d Q[x]: = e*x^2 - f*x -1Null2 Collect[P[x] + Q[x], x] -1 + d+ (c -f) x+ (b+e) x^ax3 Collect[P[x]*Q[x], x] -d+ (-c-df) x+ (-b+de -cf) x2* (-a+ ce-bf) x3 +(be-af) x4+aex5 {PolynomialQ[P[x]], PolynomialQ[Q[x]]} {True, True} PolynomialQ[Sin[x], x] False PolynomialQ[P[x] + Q[x]] True Decompose[P[x], x] {d+ cx+ bx2 + ax3} PolynomialQuotient[P[x], Q[x], x] b/e+af/e2+ax/e PolynomialRemainder[Q[x], P[x], x] -1-fx+ex2 CoefficientList[P[x], x] {d, c, b, a} Decompose[x^6 + x + 1 -x^3 + 2*x^5, x] {1+x-x3+2x5 + x6} PolynomialGCD[P[x], Q[x]] 1 PolynomialLCM[P[x], Q[x]] P[x] Q[x] PolynomialQuotient[3*x^3-2*x^2 + x, x^2 -x + 1, x] 1+3x PolynomialRemainder[3*x^3-2*x^2 + x, x^2 -x + 1, x] -1-x Reduce[a*x^2 + b*x + c == 0, x]Полиномы широко используются в математических расчетах. Поэтому обилие функций по работе с ними облегчает проведение сложных вычислений и позволяет представлять результаты в достаточно простой и удобной форме. Если бы системы компьютерной алгебры работали только с одними полиномами, то и в этом случае они вполне оправдали бы себя в глазах многих математиков.
