Функции для работы с полиномами
Для работы с полиномами имеется множество функций, по большей части достаточно очевидных для знакомого с математикой пользователя:
- 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
-
1
Null2
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]
Полиномы широко используются в математических расчетах. Поэтому обилие функций по работе с ними облегчает проведение сложных вычислений и позволяет представлять результаты в достаточно простой и удобной форме. Если бы системы компьютерной алгебры работали только с одними полиномами, то и в этом случае они вполне оправдали бы себя в глазах многих математиков.