Основы 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, %);