> collect (k, x^3);
> collect (k, exp(x));
> collect (k, sin(x));
> collect (k, cos(x));
В примере 8 для одного и того же выражения осуществляется приведение коэффициентов относительно разных его неизвестныхкомпонентов.
Параметр form применяется для полиномов от нескольких переменных и определяет алгоритм приведения подобных членов. Заметим, что неизвестные, при степенях которых приводятся подобные члены, должны быть заданы в виде списка или множества. Параметр form два значения: recursive и distributed. В первом случае приводятся подобные члены при степенях первой неизвестной в списке, затем в полученных коэффициентах приводятся подобные члены относительно степеней второй неизвестной в списке и т.д. Если при этом значении параметра form неизвестные полинома, относительно которых приводятся подобные члены, заданы в виде множества, то порядок приведения определяется системой Maple и может меняться от сеанса к сеансу. Значение distributed указывает на приведение коэффициентов при членах, содержащих всевозможные произведения степеней неизвестных в списке или множестве, причем суммарная степень всех переменных возрастает от наименьшей к наибольшей.
Пример 9. Алгоритмы приведения для полиномов нескольких переменных.
> p:=x*y-a^2*x*y+y*x^2‑a*y*x^2+x+a*x; #полином двух переменных
> collect (p, [x, y], recursive);
> collect (p, [y, x], recursive);
> collect (p, {x, y}, recursive);
> collect (p, {x, y}, distributed);
> collect (p, [x, y], distributed);
Параметр func определяет имя команды, применяемой к полученным в результате коэффициентам при соответствующих степенях неизвестных. Обычно используют команды simplify () и factor ().
Пример 10. Задание функции, применяемой к полученным коэффициентам.
> d:=a^4*y-y+a^4+a^2;
> collect (d, y);
> collect (d, y, factor); # разложение на множители коэффициентов при y
8. Рационализация дробей: rationalize()
Рационализация дроби – это избавление от иррациональности в знаменателе этой дроби. Команда rationalize () производит такое преобразование над числовыми и алгебраическими дробями. Причем в случае алгебраической дроби принимается во внимание только знаменатель в виде полинома. Эта команда может рационализировать алгебраическую дробь, знаменатель которой содержит трансцендентные функции типа sin (), ехр (), ln () и т.п. Однако если их аргумент является дробью с иррациональностями в знаменателе, то эти конструкции не участвуют в процессе рационализации.
Пример 11. Рационализация дробных выражений.
> a:=7*(3^(1/3)+4^(1/5))/(3–2^(1/3));
> rationalize(a);
> b:=y/(y+sqrt (2‑sqrt(5)));
> rationalize(b);
> c:=1/(3‑root (cos(1/(2+sqrt(mu))), 5));
> rationalize(c);
9. Ограничения на неизвестные: assume()
Часто в математических выводах приходится делать те или иные предположения относительно некоторых величин, фигурирующих в наших исследованиях, т.е. как-то ограничивать эти величины. Одни ограничения логически вытекают из области определения независимых переменных, входящих в выражения, другие мы накладываем сами. В системе Марlе имеются команды для введения и проверки ограничений, наложенных на некоторые неизвестные или даже целые выражения. Введенные ограничения используются командами и функциями Maple, например simplify(), sqrt(), для получения более простого ответа, если введенные ограничения позволяют это.
Назначение команды assume() – накладывать ограничения на неизвестные величины Maple. Команда имеет следующий синтаксис:
assume (x, свойство);
Здесь х – любая неопределенная переменная или выражение с такими переменными, а параметр свойство может принимать значения, равные названиям свойств (специальным символьным именам, зарезервированным Maple для задания различных ограничений на переменную или выражение, определенные первым параметром), имени типа данных и числовому диапазону. Некоторые из наиболее употребительных свойств перечислены в табл. 1.
Таблица 1. Свойства числовых переменных и выражений
Название свойства | Описание |
negative | Отрицательные вещественные числа из интервала (-¥, 0)(нуль не включается) |
nonnegative | Неотрицательные вещественные числа из интервала (0,¥)(нуль включается) |
positive | Положительные вещественные числа из интервала (0,¥)(нуль не включается) |
natural | Натуральные числа (целые, большие или равные 0) |
posint | Целые строго большие 0 |
odd | Нечетные числа |
even | Четные числа |
complex | Комплексные числа |
NumeralNonZero | Комплексные числа, исключая 0 |
real | Вещественные числа |
rational | Рациональные числа (дроби и целые) |
irrational | Иррациональные числа |
integer | Целые числа |
fraction | Только дробные числа |
prime | Простые числа |
Некоторые параметры (х, свойство) можно заменить математическим отношением, если, конечно, это возможно. Например, (x, negative) соответствует отношению х<0, а (х, nonnegative) соответствует х>=0 и т.д.
При наложении на переменную каких-либо ограничений в результатах выполнения действий над выражениями, в которые входит эта переменная, сразу же за ее именем по умолчанию отображается символ тильда (~). Эту функциональность по умолчанию можно изменить на следующие:
¨ либо вообще не информировать пользователя, что на переменную наложены ограничения, и она будет продолжать отображаться как и все переменные без ограничений (команда Options Þ Assumed Variables Þ NoAnnotation);
¨ либо в области вывода, если отображаются результаты, в которых присутствует переменная с наложенными ограничениями, словесно сообщается, на какие переменные наложены ограничения (команда Options Þ Assumed Variables Þ Phrase).
Пример 12. Способы отображения переменных с ограничениями.
> assume (a>0);
> ln (a^2); #Отображение по умолчанию
> ln (a^2); #Режим не информировать пользователя
> ln (a^2); #Словесное сообщение
Вернуться в режим отображения переменных с наложенными ограничениями по умолчанию можно командой OptionsÞAssumed VariablesÞTrailing Tildes.
В качестве своих параметров команда assume () может получать несколько пар (х, свойство) или несколько математических отношений. В этом случае все заданные ограничения действуют одновременно. Поэтому наложение ограничений в виде
> аssumе (х>3, х<5);
соответствует тому, что переменная х может изменяться только в интервале (3,5).
Новое ограничение, накладываемое новой командой assume () на переменную, отменяет все предыдущие ограничения. Поэтому последовательное задание ограничений двумя командами:
> assume (x>3);
> assume (x<5);
соответствует предположению, что значение переменной х не превосходит числа 5, а не тому, что значение этой переменной должно лежать в интервале(3,5).
Если необходимо еще добавить ограничения на переменную, то можно использовать команду additionally(), параметры которой полностью соответствуют параметрам команды assume (). Тогда ограничения, определенные командой additionally (), добавляются к ограничениям, введенным командой assume () и предыдущими командами additionally ():
>assume (x>3); # В последующих вычислениях предполагается х>3
(какие-то вычисления)
> аdditiоnаllу (х<=5); #Теперь предполагается, что 3<х<=5
Чтобы снять все ранее наложенные на переменную ограничения следует этой переменной просто присвоить ее же символьное имя (имя переменной, заключенное в одинарные кавычки). Для снятия всех ограничений переменной х предыдущих примеров, следует просто выполнить следующую операцию присваивания:
> x:='x';
Если же переменная с наложенными ограничениями использовалась в выражениях, то простое присваивание имени переменной самой переменной не снимает ограничения на переменную в этих выражениях. Подобная ситуация иллюстрируется в примере 13.
Пример 13. Снятие ограничений с переменной.
> assume (b>0);
> d:=surd (b^4,4);