Функции для работы с полиномами
Функции для работы с полиномами
Для работы с полиномами имеется множество функций, по большей части достаточно очевидных для знакомого с математикой пользователя:
- Decompose [poly, x] — выполняет разложение полинома, если это возможно, на более простые полиномиальные множители;
- GroebnerBasis [ {polyl, poly2,…}, {xl, х2,…}]—возвращает список полиномов, которые образуют базис Гробнера для идеала, порожденного полиномами polyi;
- Polynomial-Division [p, q, x] — возвращает список частного и остатка, полученных делением полиномов р и q от х;
- PolynomialGCD [polyl, poly2,…] — возвращает наибольший общий делитель ряда полиномов polyl, poly2, … С опцией Modulus->p функция возвращает наибольший общий делитель по модулю простого числа р;
- PolynomialLCM[polyl, poly2,…] — возвращает наименьшее общее кратное полиномов polyl, poly2, … С опцией Modulus->p функция возвращает наименьшее общее кратное по модулю простого числа р;
- PolynomialMod [poly, m] — возвращает полином poly, приведенный по модулю m;
- PolynomialMod [poly, {ml, m2,…}] — выполняет приведение по модулю всех mi;
- PolynomialQ [expr, var] — возвращает значение True, если expr является полиномом от var, иначе возвращает False;
- PolynomialQ [expr, {varl,…}] — проверяет, является ли expr полиномом от vari;
- PolynomialQuotient [р, q, х] — возвращает частное от деления р и q как полиномов от х, игнорируя какой-либо остаток;
- PolynomialRemainder [р, q, х] — возвращает остаток от деления р на q как полиномов от х;
- Resultant [polyl, poly2, var] — вычисляет результант полиномов polyl и poly2 по переменной var. С опцией Modulus->p функция вычисляет результант по модулю простого числа р.
Итак, работа с этими функциями, по существу, сводит операции с таким сложным видом символьных данных, как многочлены, к типовым алгебраическим операциям над обычными символьными переменными. Следующие примеры поясняют работу с полиномами:
Р[х] := а*х^3 + b*х^2 + с*х + d
Q[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], х]
{d+ cx+ bх2 + ах3}
PolynomialQuotient[P[x], Q[x], x]
b/e+af/e2+ax/e
PolynomialRemainder[Q[x], Р[х], х]
-1-fx+ex2
CoefficientList[P[x], x]
{d, с, b, a}
Decompose[х^6 + х + 1 — х^3 + 2*х^5, х]
{1+х-х3+2х5 + х6}
PolynomialGCD[Р[х], Q[х]]
1
PolynomialLCM[P[x], Q[x]]
Р[х] Q[x]
PolynomialQuotient[3*x^3 — 2*х^2 + х, х^2 — х + 1, х]
1+Зх
PolynomialRemainder[3*х^3 — 2*х^2 + х, х^2 — х + 1, х]
-1-х
Reduce[а*х^2 + b*х + с == 0, х]
Полиномы широко используются в математических расчетах. Поэтому обилие функций по работе с ними облегчает проведение сложных вычислений и позволяет представлять результаты в достаточно простой и удобной форме. Если бы системы компьютерной алгебры работали только с одними полиномами, то и в этом случае они вполне оправдали бы себя в глазах многих математиков.
Функции для расширенных операций с выражениями
Выше была описана сравнительно немногочисленная группа функций для работы с выражениями — их упрощения, расширения, выделения множителей и т. д. Эти функции способны решать большинство повседневных задач, связанных с аналитическими преобразованиями выражений. Однако система Mathematica имеет гораздо более полный набор функций для работы с выражениями. Они приведены в приложении.
К сожалению, объем книги не позволяет привести примеры использования всех этих функций, да и вряд ли они будут интересны всем читателям. Поэтому приведем лишь отдельные примеры работы с некоторыми из этих функций:
- Apart [expr] — переписывает рациональное выражение expr в виде суммы членов с минимальными знаменателями;
- Apart [expr, var] — аналогична Apart [expr], но все переменные, кроме var, интерпретируются как константы.
Примеры использования функции Apart:
Apart[(x^4 + 1)/(х^2 — 1)]
1+-1/(1+X)+X2-1/(1 + х )
Apart[(х^3 — у^3 — 1)/(х^2 — у), у]
Две уже знакомые нам функции выделяют знаменатель и числитель выражения в виде дроби:
Denominator[(х^2 — х — 1)/(х — 1)]
-1 + х
Numerator[(х^2 — х — 1)/(х — 1)]
-1-х + х2
Следующие функции позволяют судить о размерности выражений:
- Depth [expr ] — возвращает значение, на единицу превышающее максимальное число индексов, требуемых для указания любой части выражения expr;
- Dimensions [expr] — возвращает список размерностей выражения expr;
- Dimensions [expr, n] — возвращает список размерностей expr до уровня n. Примеры применения этих функций:
Depth[х^3 + х^2 + х + 1]
3
Dimensions[х^3 — 2*х^2 + 1]
{3}.
Функция Evaluate [expr] вычисляет выражение expr безусловно, то есть даже если оно оказывается аргументом функции, чьи атрибуты определяют его невычисляемым:
Evaluate[1 + 1 + Sin[l]]
2+Sin[l]