Основы Maxima
2.7.6 Преобразование рациональных выражений
Для выделения числителя и знаменателя дробных выражений используются функции и
:
(%i1) expr:(x^2+1)/(x^3-1);

(%i2) num(expr);

(%i3) denom(expr);

Функция приводит выражение к каноническому представлению. Она упрощает любое выражение, рассматривая его как дробнорациональную функцию, т.е. работает с операциями "+", "-", "*", "/" и с возведением в целую степень.
Синтаксис вызова:
Переменные упорядочиваются в соответствии со списком . При этом вид ответа зависит от способа упорядочивания переменных Изначально переменные упорядочены в алфавитном порядке.
Пример использования :
(%i1) ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) / (4*y^2 + x^2);

(%i2) rat(%);

После указания порядка использования переменных получаем следующее выражение:
(%i3) rat(%o1,y,a,x);

Функция позволяет изменить алфавитный порядок предпочтения переменных, принятый по умолчанию. Вызов
меняет порядок предпочтения в точности на обратный, а вызов
упорядочивает переменные
в порядке возрастания приоритета.
Флаг включает или выключает частичную факторизацию выражений при сведении их к стандартной форме (CRE). Изначально установлено значение
. Если установить значение
, то будет производиться частичная факторизация.
Функция приводит все части (в том числе аргументы функций) выражения, которое не является дробно-рациональной функцией, к каноническому представлению, производя упрощения, которые не выполняет функция
. Повторный вызов функции в общем случае может изменить результат, т.е. не обязательно упрощение проводится до конца. Применением упрощения к экспоненциальным выражениям управляет флаг
, по умолчанию равный
, если его установить в
, упрощение применяется и к показателям степени или экспоненты.
(%i1) sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2);

(%i2) ratsimp(%);

(%i3) ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));

(%i4) ratsimp(%);

(%i5) x^(a + 1/a), ratsimpexpons: true;

Функция вызывает функцию
до тех пор, пока выражение не перестанет меняться.
Пример:
(%i1) expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);

(%i2) ratsimp(expr);

(%i3) fullratsimp(expr);

(%i4) rat(expr);

Пример влияния флага на результат вычислений:
(%i1) fullratsimp( exp((x^(a/2)-1)^2 *(x^(a/2)+1)^2 / (x^a-1) ) );

(%i2) ratsimpexpons:true;

(%i3) fullratsimp( exp((x^(a/2)-1)^2 *(x^(a/2)+1)^2 / (x^a-1) ) );

Функция раскрывает скобки в выражении. Отличается от функции
тем, что приводит выражение к канонической форме, поэтому ответ может отличаться от результата применения функции
:
(%i1) ratexpand ((2*x - 3*y)^3);

(%i2) expr: (x - 1)/(x + 1)^2 + 1/(x - 1);

(%i3) expand(expr);

(%i4) ratexpand(expr);

Подстановка в рациональных выражениях осуществляется функцией . Синтаксис вызова:
Выражение
подставляется вместо выражения
в выражении
(
может быть суммой, произведением, степенью и т.п.).
Пример использования :
(%i1) ratsubst (a, x*y^2, x^4*y^3 + x^4*y^8);

(%i2) cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1;

(%i3) ratsubst (1 –- sin(x)^2, cos(x)^2, %);
