3.7.3. Разложение целых и рациональных чисел — ifactor
Для разложения
целых или рациональных чисел на множители в виде простых чисел служит функция
ifactor(n)
или
ifactor(n,method)
где n — число, method — параметр, задающий метод разложения. Другая библиотечная функция, ifactors(n), возвращает результат разложения в форме вложенных списков (файл factor):
Для алгебраических выражений функция факторизации записывается в вычисляемой и невычисляемой (инертной) формах:
factor(a)
Factor(a)
factor(a,K)
Factor(a,K)
Здесь а — полином с несколькими переменными, К — необязательное алгебраическое расширение. Для получения результата от инертной формы функции факторизации надо использовать функции вычисления evala или evalgf.
Главная цель факторизации — это нахождение максимального числа независимых сомножителей выражения, линейных по заданным переменным с коэффициентами наиболее простой формы. Ниже представлены примеры применения функции factor:
Еще одна функция общего назначения — collect — служит для комплектования выражения expr по степеням указанного фрагмента х (в том числе множества либо списка). Она задается в одной из следующих форм:
collect(а, х)
collect(а, х, form, func)
Во второй форме этой функции дополнительно задаются параметры form (форма) и func (функция или процедура). Параметр form может иметь два значения: recursive (рекурсивная форма) и distributed (дистрибутивная форма). Параметр func позволяет задать имя функции, по которой будет идти комплектование expr. Примеры применения функции collect представлены ниже (файл collect):
> collect(х+х^3-2*х,х);
– x + x³
> collect(х+2*у^3+х+3+х^3*у,recursive, х);
х(2х + 2у³ + 3 + х³y)
> collect(х+2*у^3+х+3+х^3*у,distributive,у);
у(2х + 2y³ + 3 + х³y)
> f:=а*ехр(х)-ехр(х)*х-х;
f: = аех– еx– х
> collect(f,ехр(х));
(а - х)ех– х
> g:=int(х*(ехр(х)+ехр(-х)),х);
> collect(g,ехр(х));
> р:=х*у+а*х*у+у*х^2-а*у*х^2+х+а*х;
р:= ху + аху + уx² - аух² + х + ах
> collect(р,[х,у],recursive);
(1 - а)ух² + ((1 + а)у + 1 + а)х
> collect(р,[х,у],distributed);
(1 +а)х + (1 + а)ху + (1 - а)ух²
> f:=а^3*х^2-х+а^3+а;
f:= а³х² - х + а³ + а
> collect(f,х);
а³х² - х + а³ + а
> collect(f,х,factor);
а³х² - х + а(а² + 1)
> p:=y/x+2*z/x+x^(1/3)-у*х^(1/3);
> collect(р,х);
3.7.6. Работа с пакетом рациональных нормальных форм RationalNormalForms
В Maple входит пакет рациональных нормальных форм RationalNormalForms: