> simplify (e, equ, [sin(x), cos(x)]);
> simplify (e, equ, [cos(x), sin(x)]);
> simplify (e, equ, {sin(x), cos(x)});
> simplify (e, equ, {cos(x), sin(x)});
3. Раскрытие скобок в выражении: expand ()
Команда expand () представляет произведение в виде суммы, т.е. раскрывает скобки в алгебраическом выражении. Она выполняется для любого полинома. Для частного двух полиномов (рациональная алгебраическая дробь) эта команда раскрывает скобки в числителе и делит каждый член полученного выражения на знаменатель, с которым она не производит никаких преобразований.
Эта команда имеет следующий синтаксис: ехраnd (выр, вырl, выр2,…, вырn); где выр является выражением, в котором необходимо раскрыть скобки, а необязательные параметры вырl, выр2, вырn указывают системе, что в данных выражениях в заданном преобразуемом выражении выр раскрывать скобки не надо.
Пример 5. Представление произведений в виде суммы.
> expand((x+3)*(x+4)^2);
> expand((x+3)^3/(x+4)^2);
> expand (cos(x-y));
> expand((x+3)*(x+4)^2, x+3);
> expand (x^((a+b)*(k+f)));
4. Разложение полинома на множители: factor ()
Команда factor () разлагает на множители полином от нескольких переменных. Под полиномом в Maple понимается выражение, содержащее неизвестные величины. Каждый член в этом выражении представлен в виде произведения целых неотрицательных степеней неизвестных величин с числовым или алгебраическим коэффициентом, т.е. коэффициент может быть целым, дробным, с плавающей точкой, комплексным числом и даже представлять собой алгебраическое выражение с другими переменными:
> factor (x^3*y‑2*x^2*a*y+x*y*a^2‑x^3*b^2+2*x^2*b^2*a-x*b^2*a^2+x^2*y^2–2*x*y^2*a+y^2*a^2‑y*b^2*x^2+2*y*b^2*x*a-y*b^2*a^2);
Следует помнить правило: команда раскладывает полином на множители над числовым полем, которому принадлежат коэффициенты полинома. Если все коэффициенты целые, то и в получаемых сомножителях будут только целые коэффициенты и не обязательно будут получены линейные сомножители. Второй необязательный параметр этой команды указывает, над каким числовым полем следует осуществлять разложение полинома. Он может иметь значение real, complex, а также один радикал или список / множество радикалов. Пример 6 демонстрирует результаты разложения одного и того же полинома над разными полями.
Пример 6. Разложение полинома над разными полями.
> factor (x^3+2); #над полем целых чисел (целые коэффициенты)
> factor (x^3+2.0); #над полем вещественных чисел
(вещественный коэффициент)
> factor (x^3+2, real); #над полем вещественных чисел
(параметр real)
> factor (x^3+2, complex); #над полем комплексных чисел
(параметр complex)
> factor (x^3+2,2^(1/3)); #над полем целых и радикала 2^(1/3)
(параметр определяет поле с радикалом)
Если применить команду factor () к алгебраической рациональной дроби (отношение двух полиномов), то сначала будет осуществлено приведение дроби к нормальной форме (сокращение общих множителей числителя и знаменателя), а после этого и числитель, и знаменатель раскладываются на множители (с учетом поля коэффициентов):
> d:=(x^11‑y^11)/(x^6‑y^6);
> factor(d);
5. Сокращение алгебраической дроби: normal ()
Команда normal () приводит выражение, содержащее алгебраические дроби, к общему знаменателю и упрощает полученную алгебраическую дробь, сократив и числитель, и знаменатель на наибольший общий делитель. Команда имеет две формы вызова: normal (f); normal (f, expanded); где f – алгебраическая дробь, а параметр expanded указывает на то, что после сокращения дроби в числителе и знаменателе раскрываются скобки.
Пример 7. Сокращение алгебраических дробей.
> f:=1/x+1/(x+1)^2+1/(x+1);
> normal(f);
Если параметр f задан в виде списка, множества, последовательности, ряда, уравнения, отношения или функции, то команда normal () последовательно применяется к компонентам f. Например, для уравнения это означает, что процедура сокращения применяется и к правой, и к левой части уравнения. В случае ряда, это означает, что упрощаются коэффициенты ряда, а в случае выражения с несколькими функциями, аргументы которых представлены алгебраическими дробями, процедура сокращения применяется к аргументу каждой функции:
> s:=sin (x/(x+1) – x)^2+cos (-x/(x+1)+x);
> normal(s);
> normal (1/x+y=x/y+(3*y)/x);
6. Приведение нескольких членов выражения к одному: combine ()
Назначение команды combine () – привести несколько членов в выражении, представленном суммой, произведением или степенями неизвестных, к одному члену, используя разнообразные правила. Эти правила, по существу, противоположны правилам, применяемым командой expand (). Например, рассмотрим известное тригонометрическое соотношение: sin (а+b)= sin(a) cos(b) +cos(а) sin(b).
Команда expand () использует его слева направо, тогда как команда combine () действует наоборот:
> expand (sin(a+b));
> combine (sin(a)*cos(b)+cos(a)*sin(b));
Однако рассмотрим еще один пример:
> g:=sin (a+b)^2;
> s:=expand(g);
> f:=combine(s);
Как видно из примера, команда combine () преобразовала выражение s не к исходному выражению g, которое мы раскрыли функцией expand (). Это происходит потому, что Марlе осуществляет приведение членов выражения по своим внутренним алгоритмам, которые завершаются, как только получилось (или не получилось) представление в соответствии с идеологией команды combine (). В нашем примере – представление через тригонометрическую функцию с аргументом, являющимся линейной комбинацией аргументов тригонометрических функций преобразуемого выражения. Если мы хотим получить исходный вид выражения g, то следует воспользоваться командой подстановки subs (), параметры которой определяют, что на что следует заменить в выражении:
> subs (cos(2*a+2*b)=-2*sin (a+b)^2+1, f);
Команда combine () «знакома» с практически всеми правилами преобразования элементарных математических функций. Если вторым ее параметром задать одно из следующих имен:
absexppiecewisePsiSignum
arctan icombine polylog radical trig
conjugate ln power range
которые соответствуют используемым в Maple функциям, то при преобразовании выражения будут использоваться только правила преобразования соответствующих функций. Для функций, правила преобразования которых зависят от значения их аргументов (arctan) или которые имеют ограничения на значения аргументов (ln, radical), можно задать третий параметр symbolic, который будет предписывать функции combine () не обращать внимания на интервалы изменения аргументов подобных функций, а осуществлять формальные символические преобразования в соответствии с формулами преобразования этих функций.
7. Приведение подобных членов: collect ()
Команда collect () работает с полиномами, в которых в качестве неизвестных могут выступать функции с аргументами, являющимися неизвестными величинами Maple. Команда имеет три формы вызова:
collect (выражение, х);
соllесt (выражение, х, form, func);
соllесt (выражение, x, func);
где параметр х представляет имя неизвестной величины, относительно степеней которой осуществляется приведение коэффициентов. Параметр х может быть также списком или множеством неизвестных в случае полинома нескольких переменных или именем функции с аргументом-неизвестной в выражении, представленном первым параметром выражение.
Команда collect () различает не только целые, но и положительные и отрицательные дробные степени неизвестной, т.е. при всех степенях будут отдельно приведены подобные члены.
Пример 8. Приведение коэффициентов в выражении.
k:=x^3*sin(x)^2+x^3*cos(x)+x^3*exp(x)+x*cos(x)+2*x*exp(x)+7*x*sin(x)+4*x^3;
> collect (k, x);