5.5.1. Обзор возможностей пакета PolynomialTools

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

> with(PolynomialTools);

[CoefficientList, CoefficientVector, Hurwitz, IsSelfReciprocal, MinimalPolynomial , PDEToPolynomial, PolynomialToPDE, Shorten, Shorter, Sort, Split, Splits, Translate]

В пакет входят функции расщепления, сортировки и преобразования полиномов (в том числе в дифференциальные уравнения и наоборот) и др.

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

Рассмотрим несколько функций пакета PolynomialTools общего характера.

Функция IsSelfReciprocal(a, х, 'р') — проверяет полином а(х) на условие соeff(a,x,k)=coeff(a,x,d-k) для всех k=0..d, где d=degree(a, х) — порядок полинома. Если это условие выполняется, то возвращается логическое значение true, иначе — false. Если порядок d четный и если задан третий аргумент р, то р будет представлять полином P порядка d/2, такой, что x^(d/2)*P(x+1/x)=а. При нечетном d, полином а будет взаимо-обратным, что подразумевает деление на х+1. В этом случае если p указано, результат вычисляется в форме а/(х+1).

Примеры применения этой функции представлены ниже (файл poltools):

> with(PolynomialTools):

IsSelfReciprocal(х^4+х^3+х+1, x, 'p');

true

> p;

-2 + x + x²

> IsSelfReciprocal(х^5-3*х^4+х^3+х^2-3*х+1, x, 'p');

true

> p;

3-4x+x²

> r := evalf(1+sqrt(2));

r := 2.414213562

Функция MinimalPolynomial(r, n, acc) возвращает полином минимальной степени не превышающей n, имеющий корень r. Необязательный аргумент acc задает погрешность приближения. Функция MinimalPolynomial(r, n) использует решетчатый алгоритм и находит полином степени n (или менее) с наименьшими целыми коэффициентами. Корень r может быть действительным или комплексным. Результат зависит от значения переменной окружения Digits. По умолчанию acc задано как 10^(Digits-2). Примеры применения данной функции:

> MinimalPolynomial(r, 2);

-1 - 2_Х + _Х²

> r := 1+sqrt(2);

r:= 1 + √2

> ( r, 2 );

1+√2, 2

> MinimalPolynomial( 1.234, 3 );

-109 + 61_Х - 5_Х² + 22_ X³

> fsolve( %, X );

1.234000001

Функция Split(a, х, b) служит для расщепления полинома а с независимой переменной х. Параметр b — не обязательный. Функция Split(a, х) осуществляет комплексную факторизацию инвариантного полинома а по х. Если третий аргумент b задан, он представляет множество элементов {t1, … ,tm}, таких что полином а расщепляется над K=Q(t1, …, tm), где Q означает поле рациональных чисел.

Примеры:

> Split(х^2+х+1,х);

(х - RootOf(_Z² + _Z + 1))(х + 1 + RootOf(_Z² + _Z + 1))

> Split(х^2+у*х+1+у^2, x, 'b');

(x - RootOf(_Z² + y_Z + 1 + r))(x + y + RootOf(_Z² + y_Z + 1 + y²))

> b;

{RootOf(_Z² + у _Z + 1 + y²)}

В пакете определена еще одна подобная функция Splits, с которой можно познакомиться по справке на нее.

Функция Translate(a, х, х0) преобразует полином а(х) с подстановкой х=х+х0, где х0 — константа. Примеры применения этой функции даны ниже:

> Translate(х^2, х, 1);

1 + 2x + x²

> expand(eval(х^2,х=х+1));

1 + 2х + х²

> Translate(х^3,х,2);

8 + 12х + 6х² + х³

> expand(eval(х^3,х=х+2));

8 + 12х + 6х² + х³

> Translate((х+1)^3,х,-1);

5.5.3. Функции сортировки полиномов

Для сортировки полиномов предназначены следующие три функции:

Shorter(f, g, х)

Sort(v, х)

Shorten(f, x)

Здесь f и g полиномы, v — список полиномов и x — независимая переменная. Функции отличаются характером сортировки.

Функция Shorter определяет полином f как более короткий, чем g, по следующим признакам: меньшая длина, меньшее имя независимой переменной х, не дробный и меньшая степень других переменных. Функция Sort сортирует лист полиномов х по признакам, определяемым Shorter. Функция Shorten использует преобразования Мёбиуса. Многочисленные детали ее применения можно найти в справке по данной функции. Примеры применения функций сортировки:

> Shorten(х^2+х+1,х);

x² + 3

> Shorten(3*х^3+18*х+14,х);

x³ - 6

> Shorten(х^4+32);

х4 + 2

> Shorter(х^3,х+5,х);

false
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату