Записи с меткой «полином»

Функции для работы с полиномами

Функции для работы с полиномами
Для работы с полиномами имеется множество функций, по большей части достаточно очевидных для знакомого с математикой пользователя:

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

Основные операции над полиномами

Основные операции над полиномами
Полиномом называют выражение, состоящее из нескольких частей одного вида. В западной математической литературе к ним часто относят степенной многочлен вида
Р(х) = а0 + а1х + а2 х2 + а3 х3 + … + аnхn.
Хотя термин «полином» не очень прижился в отечественной математической литературе, мы оставляем его ввиду краткости и ради лучшего понимания синтаксиса функций системы, поскольку слова poly и Polynomial входят в параметры и имена многих функций. При этом полиномы мы будем кратко обозначать как poly или pi (здесь i — индекс или порядковый номер полинома).
Над полиномами можно выполнять обычные арифметические операции: сложение, вычитание, умножение и деление. Это иллюстрируют следующие примеры (здесь р! и р2 — полиномы от одной переменной х):
р1 := х^3 + 2*х^2 + 3*х + 4
р2 := х^2 — 1
р1 + р2
3+3х+3х2+х3
р1 — p2
5+3х+х2+х3
Expand[pl*p2]
-4- 3х + 2х2 + 2х3 + 2х4 + х5
pl/p2
[4 + Зх+2х2 + х3]/[-1 + х2]
Simplify[(х^5 + 2*х^4 + 2*х^3 + 2*х^2 — 3*х — 4)/(х^2 — 1)]
4+3х+2х2+х3
Если ситуация со сложением и вычитанием полиномов достаточно очевидна, то с умножением и делением результат часто повторяет задание. Для получения результата умножения полиномов в обычной форме следует использовать функцию расширения символьных выражений Expand.
Если один полином делится на другой (это бывает далеко не всегда), то для получения результата надо использовать функцию Simplify. далее…

Решение функциональных уравнений

Решение функциональных уравнений
Решение функционального уравнения, содержащего в составе равенства некоторую функцию f(x), заключается в нахождении этой функции. Для этого можно использовать функцию solve, что демонстрируют приведенные ниже примеры:

Решение уравнений с линейными операторами
Maple 15 позволяет решать уравнения с линейными операторами, например с операторами суммирования рядов и дифференцирования. Ограничимся одним примером такого рода: 

Решение в численном виде — функция fsolve
Для получения численного решения нелинейного уравнения или системы нелинейных уравнений в форме вещественных чисел удобно использовать функцию:
fsolve( eqns. vars. options )
Эта функция может быть использована со следующими параметрами:

  •  complex — находит один или все корни полинома в комплексной форме;
  •  full digits — задает вычисления для полного числа цифр, заданного функцией Digits;
  •  maxsols=n — задает нахождение только n корней;
  •  interval — задается в виде а. .b или х=а. .b, или (х=а. .b, y=c. .d, …} и обеспечивает поиск корней в указанном интервале.

Функция fsolve дает решения сразу в форме вещественных или комплексных чисел, что и показывают следующие примеры:
 
Заметим, что локализация поиска корней в заданном интервале позволяет отыскивать такие решения, которые не удается получить с помощью функций solve и fsolve в обычном применении. В последнем из приведенных примеров дается решение системы нелинейных уравнений, представленных уравнениями f и д.
Чтобы еще раз показать различие между функциями solve и fsolve, рассмотрим пример решения с их помощью одного и того же уравнения erf(x) = 1/2:
> so1ve(erf(x)=l/2,x);
RootOf(2erf(_Z)-l) 
> fsolve(erf(x)=l/2);
.4769362762
Функция solve в этом случае находит нетривиальное решение в комплексной форме через функцию RootOf, тогда как функция fsolve находит обычное приближенное решение.
Решение рекуррентных уравнений — rsolve
Функция solve имеет ряд родственных функций. далее…

Разложение в ряды Тейлора и Маклорена

Разложение в ряды Тейлора и Маклорена
Для разложения в ряд Тейлора используется функция taylor(expr, eq/nm, n). Здесь ехрr — разлагаемое в ряд выражение, eq/nm — равенство (в виде х=а) или имя переменной (например, х), n — необязательный параметр, указывающий на порядок разложения и представленный целым положительным числом (при отсутствии указания порядка он по умолчанию принимается равным 6). При задании eq/nm в виде х=а разложение производится относительно точки х =а. При указании eq/nm в виде просто имени переменной разложение ищется в окрестности нулевой точки, то есть фактически вычисляется ряд Маклорена.
Ниже представлены примеры применения функции taylor:

Не все выражения (функции) имеют разложение в ряд Тейлора. Ниже дан пример такого рода:
> taylor(l/x+x^2,x,5):
Error, does not have a taylor expansion, try seriesQ 
> series(l/x+x^2,x,10);
je-4*2 
> taylor(l/x+x*2,x=l,5);
2 +x — 1 + 2(x — 1f — (x — 1 )3 +(x — 1 )4 +O((x- 1 )5)
Здесь Maple 15 отказалась от вычисления ряда Тейлора в окрестности точки х = 0 (по умолчанию) и предложил воспользоваться функцией series. Однако эта функция просто повторяет исходное разложение. В то же время в окрестности точки х = 1 ряд Тейлора вычисляется.
Для разложения в ряд Тейлора функций нескольких переменных используется библиотечная функция mtaylor:
mtaylor(f. v)
mtaylorCf. v. n)
mtaylor(f. v, n, w)
Здесь f — алгебраическое выражение, v — список имен или равенств, n — необязательное число, задающее порядок разложения, w — необязательный список целых чисел, задающих «вес» каждой из переменных списка v. Эта функция должна вызываться из библиотеки Maple 15 с помощью команды readlib:

Для получения только коэффициента при k=м члене ряда Тейлора можно использовать функцию coeftayl (expr,var,k). Если ехрr — функция нескольких переменных, то k должен задаваться списком порядков коэффициентов.

Пример документа — разложение синуса в ряд
Полезно сочетать разложение выражений (функций) в ряд Тейлора с графической визуализацией такого разложения. далее…

Вычисление интегралов

Вычисление интегралов
Вычисление неопределенных интегралов
Вычисление неопределенного интеграла обычно заключается в нахождении первообразной функции. Это одна из широко распространенных операций математического анализа.
Для вычисления неопределенных и определенных интегралов Maple V предоставляет следующие функции: 
int(f.x);    int(f.x=a..b);   int(f.x=a..b,continuous):
Int(f.x);    Int(f,x=a..b):   Int(f,x=a..b,continuous):
Здесь f — подынтегральная функция, х — переменная, по которой выполняются вычисления, а и b — нижний и верхний пределы интегрирования, continuous — необязательное дополнительное условие.
Maple 15 старается найти аналитическое значение интеграла с заданной подынтегральной функцией, Если это не удается (например, для «не берущихся» интегралов), то возвращается исходная запись интеграла. Для вычисления определенного интеграла надо использовать функцию evalf(int(f ,х=а. .b)). Ниже приведены примеры вычисления интегралов:

Обратите внимание, что в аналитическом представлении неопределенных интегралов отсутствует произвольная постоянная С. Не следует забывать о ее существовании. далее…

Двойные суммы

Двойные суммы
Могут встречаться множественные суммы по типу «сумма в сумме». Ограничимся приведением примера двойной суммы, имеющей аналитическое значение:

При конкретном значении N такую сумму нетрудно вычислить подстановкой: 
> subs( N = 100, %); 
  8670850
Как видно из приведенных примеров, средства вычисления сумм последовательностей Maple 15 позволяют  получать как численные, так и аналитические значения сумм, в том числе представляемые специальными математическими функциями.

Вычисление произведений членов последовательностей
Основные формулы для произведения членов последовательностей
Аналогичным образом для произведений членов f(i) некоторой последовательности, например вида:

используются следующие функции:
product(f,k);    product(f,k=m..n):    product (f,k=alpha):
Product(f,k);    Product(f,k=m..n):    Product(f,k=alpha).
Обозначения параметров этих функций и их назначение соответствуют приведенным для функций вычисления сумм. Это относится, в частности, и к применению одиночных кавычек для f и k.

Примеры вычисления произведений членов последовательностей
Примеры применения функций вычисления произведений даны ниже:

Как и в случае вычисления сумм, вычисление произведений возможно как в численной, так и в аналитической форме — разумеется, если таковая существует. Это показывает следующий пример:

Нетрудно понять, что при i, стремящемся к бесконечности, перемножаемые члены последовательности стремятся к нулю, а потому к нулю стремится и их произведение. Вопросы доказательства подобных утверждений находятся за рамками данного учебного курса, ибо он посвящен не математике как таковой, а конкретной программе для математики — Maple 15.
От перемены места сомножителей произведение меняется!
Хотя произведение не зависит от порядка расположения сомножителей, их перестановка в Maple 15 недопустима. далее…