Команды преобразования выражений.

Для некоторых команд Maple существуют две формы: активная и пассивная. Имя активной команды начинается со строчной буквы. После ввода такой команды и нажатия клавиши Enter, она сразу выполняется.

Пассивная форма команды не выполняется немедленно ядром Maple, а просто в области вывода отображает математическую запись того, что она может сделать. Имя пассивной команды начинается с прописной буквы. В дальнейшем, используя команду value( ) пассивная команда может быть исполнена. Однако, основное предназначение пассивных команд - использование их как средства документирования производимых действий в обычной математической форме.

В данном разделе лекции рассмотрен ряд наиболее часто используемых при выполнении аналитических вычислений команд.

< a )> упрощение выражений
  раскрытие скобок в выражении
  нахождение максимального числа независимых сомножителей выражения, линейных по заданным переменным с коэффициентами наиболее простой формы
< a )> сокращение алгебраической дроби
< a )> приведение нескольких членов разложения к одному
  приведение подобных членов
  рационализация дробей
  ограничения на неизвестные
< B> добавочные ограничения на неизвестные

Рассмотрим более подробно эти команды.

Команда simplify( )предназначена для упрощения разнообразных выражений, включающих рациональные дроби (алгебраические выражения), содержащих тригонометрические, обратные тригонометрические функции, логарифмы, экспоненты и т.д..Эта команда имеет несколько форм вызова, отличающихся наличием параметров, управляющих процедурой упрощения. Её самый простой синтаксис имеет вид:

simplify(выражение);

В скобках в качестве параметра передается выражение, подлежащее упрощению.

Команда simplify( ) ищет в выражении вызовы функций, квадратные корни, радикалы и степени и инициирует подходящие процедуры упрощения, которые хранятся в основной библиотеке Maple.

В вызове команды можно задать конкретные процедуры упрощения, и тогда только они будут использоваться для упрощения заданного выражения, а не весь возможный, установленный по умолчанию набор. Такой вызов обеспечивается следующей формой команды:

simplify(выражение, n1, n2 ...);

Здесь n1, n2 ... являются именами процедур упрощения: Ei, GAMMA, RootOf, @, hypergeom, ln, polar, power, radical, sqrt, trig и др.

В справке по команде simplify( )можно найти перечень возможных процедур упрощения, а также полную информацию о формулах упрощения при использовании того или иного параметра (используя гиперссылки в системе помощи или набрав команду ?simplify[имя], где имя- одно из значений параметров функции).

При упрощении выражения можно предположить, что на переменные в нем наложены некоторые ограничения. Это осуществляется заданием ключевого параметра assume=свойство. Форма вызова команды в этом случае имеет вид:

simplify(выражение,assume=свойство);

где параметр свойствоможет принимать одно из следующих значений:
complex-комплексная область,
real- действительная область,
pozitiv- положительные действительные числа,
integer - целые числа,
RealRange(a,b)- интервал (a,b)действительных чисел.

При вызове команды упрощения сложно последним (или единственным, не считая самого упрощаемого выражения) параметром указать параметр с именем symbolic.

В этом случае, если выражение содержит многозначные функции, то относительно них будет осуществлено формальное символическое упрощение. Отметим, что этот параметр надо использовать с осторожностью, так как в большинстве случаев результат упрощения не верен на всей комплексной плоскости, а также не всегда известно, какая ветвь многозначной функции использовалась при упрощении.

Команда simplify( )позволяет задать правила упрощения в виде равенств. Эти правила задаются вторым параметром функции в виде множества. Синтаксис команды в этом случае:

simplify(выражение,{равенство1. равенство2, ...});

Если какое-то выражение при упрощении должно равняться нулю, то такое правило можно задать, просто внеся выражение без знака равенства в список правил. Подробнее ознакомиться с использованием собственных правил упрощения можно на странице Справки, отображаемой командой ?simplify[siderels]

Основное назначение команды expand( )- представить произведение в виде суммы, т.е. данная команда раскрывает скобки в алгебраическом выражении. Для частного двух полиномов (рациональная алгебраическая дробь) эта команда раскрывает скобки в числителе и делит каждый член полученного выражения на знаменатель, с которым она не производит никаких преобразований. Команда имеет следующий синтаксис:

expand(ВЫРАЖЕНИЕ) expand(ВЫРАЖЕНИЕ, выр1, выр2, ..., вырN) где ВЫРАЖЕНИЕявляется выражением, в котром надо раскрыть скобки, выр1, выр2, ..., вырN- необязательные параметры, указывают системе на подвыражения, в которых скобки раскрывать не надо.

Данная функция знает правила преобразования тригонометрических выражений, выражений с экспоненциальными функциями, полиномами и др..

Основное предназначение команды factor( ) - разложение на множители полинома от нескольких переменных. Под полиномом в Maple понимается выражение, содержащее неизвестные величины, в которых каждый член представлен в виде произведения целых неотрицательных степеней неизвестных величин с числовым или алгебраическим коэффициентом, т.е. коэффициент может быть целым, дробным, с плавающей точкой, комплексным числом и даже представлять собой алгебраическое выражение с другими переменными.

Синтаксис команды: factor(Выражение) factor(Выражение, пар) где необязательный второй параметр парслужит для указания, над каким числовым полем следует осуществлять разложение полинома. Он может иметь значения: real, complex, а также один радикал или список|множество радикалов.

Если второй параметр не указан, команда factor( ) раскладывает полином на множители над числовым полем, которому принадлежат коэффициенты полинома.

При применении команды factor( ) к алгебраической рациональной дроби (отношение двух полиномов) сначала осуществляется приведение дроби к нормальной форме (сокращение общих множителей числителя и знаменателя), а после этого и числитель, и знаменатель раскладываются на множители (с учетом поля коэффициентов).

Команда normal( )приводит выражение, содержащее алгебраическую дробь, к общему знаменателю и упрощает полученную алгебраическую дробь, сокращая и числитель, и знаменатель на наибольший общий делитель. Команда имеет две формы вызова:

normal(f); normal(Выражение, expanded); где параметр expanded служит для указания того, что после сокращения дроби в числителе и знаменателе раскрываются скобки. Если параметр Выражение задан в виде списка, множества, последовательности, ряда, уравнения, отношения, или функции, то команда normal(f)последовательно применяется к компонентам f.

Команда combine( )приводит несколько членов в выражении, представленном суммой, произведением или степенями неизвестных, к одному члену, используя разнообразные правила, которые по существу противоположны правилам, применяемым командой expand( ). Команда имеет несколько форм вызова:

combine(s) combine(s, пар) combine(s, пар, symbolic) где s - выражение, которое надо "свернуть" пар - необязательный параметр, который указывает на функции, пправила преобразования которых (и только они !) должны применяться при выполнении команды. В качестве этого параметра могут быть использованы:
abs arctan conjugate exp
icombine ln piecewise poligon
power Psi radical range
Signum trig    

symbolic - параметр, предписывающий команде combine( ) не обращать внимания на интервалы изменения аргументов (на ограничения значений аргументов) функций, указанных в качестве второго параметра. В этом случае осуществляется формальное символическое преобразование в соответствии с правилами преобразования этих функций.

Более подробную информацию об опциях команды combine( ) можно получить, выполнив команду ?combine[опция].

Команда collect( )приводит подобные члены в обобщенных полиномах нескольких переменных, в которых в качестве неизвестных могут выступать функции с аргументами, являющимися неизвестными величинами.

Синтаксис этой команды имеет несколько форм: collect(выражение, x) collect(выражение, x, func) collect(выражение, x, alg, func)

где x - параметр, указывающий на величину, относительно степени которой осуществляется приведение коэффициентов. Этот параметр может быть: именем неизвестной величины (x или y, или др.), списком или множеством в случае полинома нескольких переменных ([x,y,z] или {x,y,z}), именем функции с АРГУМЕНТОМ-неизвестной (exp(x) или cos(z)).

func - имя команды, которая применяется к полученным в результате коэффициентам при соответствующих степенях неизвестных. Обычно используются команды simplifyили factor.

alg- параметр, определяющий алгоритм приведения подобных членов для полиномов от НЕСКОЛЬКИХ переменных. Неизвестные, при степенях которых приводятся подобные члены, должны быть заданы в виде списка или множества. Этот параметр может принимать два значения: recursive(значение по умолчанию) или distributed.

Параметр recursiveинициирует следующий алгоритм: приводятся подобные члены при степенях первой неизвестной в СПИСКЕ, далее в полученных коэффициентах приводятся подобные члены относительно степеней второй неизвестной в списке и т.д. Если при использовании этого алгоритма параметр x представляет из себя МНОЖЕСТВО, то порядок приведения подобных членов определяется системой Maple и может меняться от сеанса к сеансу.

Параметр distributed указывает на приведение коэффициентов при членах, содержащих всевозможные произведения степеней неизвестных в списке или множестве, причем суммарная степень всех переменных возрастает от наименьшей к наибольшей.

Под рационализацией дробей понимается избавление от иррациональности в знаменателе. Команда rationalize( ) и производит именно такое преобразование над числовыми и алгебраическими дробями.

Синтаксис команды: rationalize(F) где F - выражение или список выражений.

 

Эта команда может рационализировать алгебраическую дробь, знаменатель которой содержит трансцендентные функции типа sin(), ln(), exp() и т.п.. Однако, если аргумент этих функций является дробью с иррациональностями в знаменателе, то эти конструкции не участвуют в процессе рационализации.

Зачастую без введения определенных ограничений на некоторые выражения ничего нельзя сказать о свойствах математических объектов, в которых они фигурируют. Одни ограничения вытекают из области определения независимых переменных, другие мы накладываем сами в процессе решения задачи. Команда assume( ) накладывает ограничения на неизвестные величины Maple. Синтаксис команды:

assume(x, свойство)

Здесь x -любая неопределенная переменная Maple или выражение с такими переменными.
свойство - параметр, принимающий значения, равные названиям свойств (зарезервированные символьные имена Maple), имени типа данных или числовому диапазону.

Некоторые свойства числовых переменных и выражений:

Название свойства Описание
negative Отрицательные вещественные числа (нуль не включается)
nonnegative Неотрицательные вещественные числа (нуль включается)
positive Положительные вещественные числа (нуль не включается)
natural Натуральные числа (целые, большие или равные нулю)
posint Целые строго больше нуля
odd Нечетные числа
even Четные числа
complex Комплексные числа
NumeralNonZero Комплексные числа, исключая 0
real Вещественные числа
rational Рациональные числа (дроби и целые)
irrational Иррациональные числа
integer Целые числа
fraction Только дробные числа
prime Простые числа

Пару параметров (x, свойство) можно заменить математическим отношением, если, конечно, это возможно. Например, (x, negative) соответствует отношению (x<0). Команда assume( ) может получать несколько пар (х, свойство) или математических отношений в качестве своих параметров. В этом случае все заданные ограничения действуют одновременно.

НОВОЕ ограничение, накладываемое новой командой assume( ) на переменную, ОТМЕНЯЕТ все предыдущие ограничения. Если по ходу решения задачи необходимо постепенно добавлять ограничения на переменную, то используют команду additionaly( ), параметры которой полностью соответствуют параметрам команды assume( ).

Если на переменную наложены ограничения, то в области вывода в выражении с этой переменной сразу же за её именем по умолчанию отображается символ тильда ( ~). Эту функциональность можно изменить, используя команды основного меню Options -> Assumed Variables. При выборе подкоманды No Annotation пользователь вообще не будет информирован об ограничениях, переменная с ограничениями будет продолжать отображаться, как и все переменные без ограничений. Подкоманда Phrase отображает в области вывода словесное сообщение о том, что на переменную наложены ограничения. А подкоманда Trailing Tildes позволяет включить режим отображения переменных с наложенными ограничениями, если он был отключен.

Отобразить информацию о наложенных на неизвестную величину ограничениях можно с помощью команды about(x).

Дополнительные функции, позволяющие получить информацию о переменных: