Кроме того, в Maple можно вводить таблицы и текстовые параграфы, структурировать текст и документ, добавлять гиперссылки, объединяющие несколько документов в подобие электронной книги. В документ также можно вставлять объекты (рисунки и таблицы) из других программ, используя интерфейс OLE2.
Отметим, что различные документы, открытые в одном сеансе, используют общую область памяти, и значение, присвоенное переменной в одном документе, сохраняется при переходе к другому локумету. Для реализации многозадачной работы имссгся программа Parallel Server Maple 6. Ее интерфейс идентичен основной программе wmaple, но при работе назначения переменных действительны только в пределах «родного документа».
Оболочка
Результаты работы могут быть сохранены в файлах различных форматов. Текущий документ (области ввода и вывода, комментарии, текст, графика) записываются в файл с расширением .mws. При записи в файлы с другими расширениями сохраняются только области ввода и тексты комментариев. Кроме того, весь документ или его часть могут быть сохранены в форматах, допускающих их использование в других программах.
Пакет Maple постоянно развивается, приобретая новые команды и, соответственно, возможности для проведения математических выкладок, вычислений, графического отображения информации. При этом происходят изменения в синтаксисе и оболочке. Для хранения преемственности с документами, подготовленными в старых версиях, фирма снабжает свой продукт специальными конверторами, при загрузке файла устаревшей версии Maple предлагает преобразовать нотацию файла согласно новым правилам.
Задачи
на определение минимума и/или максимума (минимакса)
функции имеют не только чисто теоретическое значение в качественных аспектах
целого ряда математических разделов, но в большей мере в многочисленных
приложениях математического анализа. Для решения задач данного типа Maple-язык.
предоставляет ряд средств различного уровня. К средствам первого уровня
относятся функции min и max, имеющие идентичные форматы кодирования вида
{min|max}(V1,V2,…,Vn) и возвращающие {минималъное|максималъное} значение среди
результатов вычисления выражений Vk, указанных фактическим аргументом {Vk} - последовательности
(
). В качестве выражений Vk допускаются выражения,
результаты вычисления которых могут быть как числовыми, так и символьными. В
случае определения минимакса над последовательностью как числовых, так и
символьных значений, возвращается {min|max}-конструкция, в которой произведены
выбор числового минимакса и вычисления символьных выражений. При этом, если для
символьных значений используется assume-механизм, то в выборе минимакса могут
принимать участие и символьные значения, в ряде случаев возвращая символьный
результат. Пустые вызовы функций {min, max} возвращают
-значения, а именно: [min(),max()];
, что по логике вещей должно быть с точностью до
наоборот. Функции {min, max} могут
использоваться совместно с функцией convert({min|max},piecewise), определяй
минимаксные области для значений символьных выражений. Однако в таком случае
операции возведения в степень в аргументе {min|max} функции convert должны быть
представлены в терминах произведения. Следующий простой фрагмент иллюстрирует
вышесказанное:
Приведенное описание функций {min,max} делает примеры фрагмента вполне прозрачными, как и применение рассмотренных функций минимакса в целом. Здесь же следует отметить то обстоятельство, что в виду градиентного характера понятий минимума и максимума на множестве числовых значений, в частности, и с помощью функции sort возможно решать минимаксные задачи уровня, не ниже рассмотренного. Так последний пример фрагмента представляет простую процедуру MinMax, реализованную на основе функции sort и возвращающую трехэлементный список, элементы которого представляют соответственно: количество переданных процедуре в качестве ее фактических аргументов числовых выражений, а также минимальное и максимальное среди них значение. На основе функции sort можно создавать и полезные нечисловые минимаксные процедуры, для которых стандартные средства языка АРМа не применимы.
На втором уровне Maple-язык АРМа предлагает функции minimize и maximize, допускающие следующие идентичные для обоих функций форматы кодирования:
{minimize|maximize}(V{,<Переменная>{,<Диапазон>|`infinite`}})
и возвращающие в случае простейшего формата соответственно {минимум|максимум} указанного первым фактическим аргументом алгебраического выражения V либо последовательность значений выражения V в качестве кандидатов для искомого минимакса. При кодировании второго фактического аргумента он определяет ведущую переменную либо их множество, относительно которых должен отыскиваться минимакс выражения V. При отсутствии второго фактического аргумента (простейший формат кодирования с одним формальным аргументом) минимакс отыскивается относительно всех идентификаторов исходного выражения V, т.е. <Переменная>=indets(V,name).
Необязательный третий аргумент функции (указывается только при наличии второго аргумента) определяет интервал или их множество для ведущих переменных выражения V, в рамках которых отыскивается его минимакс; при этом анализируются и граничные точки интервалов. В случае указания в качестве третьего фактического аргумента минимаксной функции `infinite` -значения минимакс отыскивается для действительных значений по всем ведущим переменным выражения V, определяемым вторым фактическим аргументом функции.
В качестве границ интервалов (третий фактический аргумент) для минимаксных функций {minimize,maximize} допускаются только выражения, результаты вычисления которых имеют {integer|fraction|float}-тип, в противном случае идентифицируется ошибочная ситуация «Error», {minimize|maximize} expects its 3rd argument, ranges». В случае одной ведущей переменной интервал можно указывать без ее идентификатора. На неопределенных функциях в качестве первого фактического аргумента минимаксной {minimize,maximize}-функции возвращаются значения NULL.
В ряде случаев минимаксные функции возвращают результаты в терминах
алгебраических чисел вместе со вторым фактическим аргументом функции, если их
порядок выше двух. Данная ситуация во многих случаях исключаема путем указания
интервалов для ведущих переменных либо определения `infinite`-значения для
третьего аргумента функции. Следующий простой фрагмент иллюстрирует применение
рассмотренных минимаксных функций Maple-языка АРМа:
Примеры фрагмента с учетом сказанного достаточно прозрачны и особых пояснений не требуют. Таким образом, по минимаксной {minimize,maximize}-функции можно отыскивать как глобальные, так и локальные минимаксы функций нескольких переменных; при этом, при необходимости исследуется их бесконечная асимптотика. Завершает фрагмент процедура MiniMax, имеющая не менее двух формальных аргументов: тип искомого минимакса `{mini|maxi}` анализируемое на минимакс выражение V, а также, возможно, интервалы по ведущим переменным, определяющие область отыскания минимакса выражения. Для случая одной ведущей переменной процедура возвращает список, содержащий как тип и значение минимакса, так и точку, в которой он получен; для многомерного случая возвращается тип минимакса и его значение.
В модуле student наряду с рядом средств для решения базовых задач анализа содержатся определения функций минимакса (аналогичные рассмотренным выше или более ограниченные по возможностям) и функция extrema, имеющая формат:
(V,<Условия>{,<Множество переменных>{,'h'}})
Функция extrema возвращает условный экстремум алгебраического выражения V от нескольких ведущих переменных (определенных множеством их идентификаторов в третьем фактическом аргументе) согласно заданным вторым фактическим аргументом условиям. Второй аргумент функции обязателен и задается в виде множества уравнений либо выражений, связывающих ведущие переменные; в случае выражений они по умолчанию полагаются в качестве левых частей уравнений с нулевой правой частью. В случае отсутствия таких ограничений кодируется пустое {}-множество.
В случае отсутствия третьего фактического аргумента, определяющего
множество ведущих переменных,относительно которых должен отыскиваться экстремум
выражения V, в качестве их по умолчанию выбираются все идентификаторы выражения V и
уравнений-условий. В качестве результата функция ехtreта возвращает множество
экстремумов, а также, возможно, вложенное множество экстремальных точек,
включая и кандидаты на принадлежность к экстремальным; последнее возвращается в
качестве значения невычисляемого идентификатора `h` - четвертого фактического
аргумента функции. В случае невозможности получить выражение для экстремальных
точек в качестве значения переменной h возвращается система уравнений, решение
которой и определяет такие точки. Для вычисления условных экстремумов функция
ехtrета использует метод неопределенных множителей Лагранжа. Следующий фрагмент
иллюстрирует применение функции ехп-ета для вычисления условных экстремумов:
В
приведенном фрагменте вычисляются экстремумы для двух функций А(х,у) и Z(x,y) с проведением анализа результатов, полученных
на основе функции extrema. Наряду с этим, для функции g(x)=(x+2)*sin(x), не
имеющей конечного глобального экстремума на открытом интервале
, но имеющей бесконечное множество локальных
экстремумов, применение функции extrema позволяет
получать ближайший справа от начала координат базовый локальный экстремум (С;
максимум) и в качестве экстремальной точки-кандидата (h-nepeменная) ближайший
слева от начала координат локальный экстремум (.3093012857; максимум).
Представленный график иллюстрирует поведение исследуемой функции g(x) в области
полученных функцией extrema локальных экстремумов. В качестве полезного
упражнения читателю рекомендуется на основе рассмотренных выше средств
дифференцирования, отыскания пределов и минимакса написать общего типа
процедуру, позволяющую производить полный анализ функций одной переменной с
выводом графика в области экстремальных точек.
При вычислении условных экстремумов во многих случаях для получения строго численных результатов рекомендуется использовать функцию evalf, как это продемонстрировано в примерах фрагмента. Возвращаемые функцией extrema результаты следует проверять на предмет типа экстремума {минимум|максимум} и анализировать экстремальные точки, возвращаемые h-переменной, ибо среди них могут находиться как точки, определяющие возвращаемый функцией экстремум, так и точки-кандидаты в качестве экстремальных. В случае выражения V от нескольких переменных и корректного определения условий по функции extrema во многих случаях возвращается искомый экстремум, а через h-переменную - координаты экстремальной точки, в остальных же случаях требуется дополнительное исследование поведения выражения V.
Наконец,
третий уровень средств по обеспечению решения минимаксных задач составляют средства модуля пакета simplex, содержащего
определения как минимаксных, так и ряда других функций для решения задач
линейного программирования симплексным методом. Детальнее со средствами simpleх-модуля
можно ознакомиться в [74, 84, 85, 94], здесь же мы остановимся на двух базовых
минимаксных функциях, решающих проблему минимакса для линейной целевой функции
(ЦФ) и имеющих формат:
{minimize|maximize}(<Целевая
функция>{,<ЛО>{,<ТВП>{'а'{,'b'}}})
где в качестве первого фактического аргумента функции выступает линейная целевая функция (ЦФ), для которой отыскивается соответственно {минималъное максималъное} значение на определенных вторым фактическим аргументом линейных ограничениях (ЛO) и типах ведущих переменных (ТВП), определяемых третьим фактическим аргументом функции. Второй фактический аргумент записывается в виде списка/множества линейных неравенств по ведущим переменным целевой функции. Третий необязательный аргумент функции определяет тип знака для ведущих переменных, относительно которых отыскивается минимакс ЦФ; для него допустимыми являются только два значения: NONNEGATIVE (по умолчанию; все ведущие переменные полагаются неотрицательными) и UNRESTRICTED (ограничений на знак ведущих переменных не накладывается). Наконец, необязательные четвертый и пятый аргументы функции определяют невычисляемые переменные 'а' и 'b', через которые возвращаются описание оптимизирующего решения минимаксной задачи и использованные для его получения преобразования ведущих переменных соответственно.
При этом для тестирования корректности задания системы ограничений, определяемых вторым и третьим фактическими аргументами минимаксной функции, служит логическая функция feasible(<ЛО>{,<ТВП>{'а'{,'b'}}}), смысл аргументов которой полностью соответствует выше сказанному и которая возвращает значение true в случае корректности системы условий и значение false - в противном случае. Более того, два последних необязательных аргумента функции в этом случае возвращают соответственно значение для окончательной системы корректных ЛO (которая может также включать глобальные переменные _AR, _SLk и/или _negk, _posk ядра пакета) и использованные для ее получения преобразования ведущих переменных ЦФ.
При этом модульная функция convert(LO,std) возвращает множество/список линейных ограничений для целевой функции, полученных путем переноса всех констант левых частей LO-списка/множества ограничений в их правые части. Модульная функция convert(LO,stdle) производит конвертацию всех неравенств LO-ограничений в неравенства (<=)-типа, упрощая решение задач симплекс-методом. Для использования обоих функций требуется выполнение предложения with(simplex).
Минимаксная
функция {minimize|maximize} возвращает
результат оптимизации исходной ЦФ в виде множества уравнений по ее ведущим
переменным, на которых ЦФ достигает соответственно {минимума|максимума}.
Последующая подстановка их в ЦФ возвращает само минимаксное значение. В случае
отсутствия оптимизирующего решения возвращается пустое {}-множество, а для
неограниченного решения возвращается значение NULL. Следующий фрагмент
иллюстрирует применение рассмотренных средств для решения простых задач
линейного программирования:
С учетом сказанного примеры фрагмента представляются достаточно прозрачными. В частности, для целевой функции определяется система линейных ограничений, после проверки которой на корректность производится вычисление максимизирующего функцию QR решения на указанных линейных ограничениях. Полученное в виде множества уравнений оптимизирующее решение R посредством функции subs подставляется в функцию QR, возвращая искомое значение QR_max:= 1588872, максимальное для заданной системы линейных ограничений. С остальными примерами фрагмента рекомендуем разобраться читателю в качестве упражнения. Таким образом, рассмотренные и ряд других функций simplex-модуяя можно рассматривать в качестве базового средства решения задач линейного программирования в среде Maple-языка.
Минимаксные задачи составляют весьма обширный класс математических проблем, использующих для своего решения разнообразные методы. Прямые средства языка АРМа позволяют успешно решать только наиболее простые из них, однако имеющие весьма широкие приложения. Вместе с тем, на основе их и ряда других рассмотренных средств Maple-языка пользователь может создавать собственные средства оптимизации и решения минимаксных задач различного назначения. Более того, имеется достаточно широкий набор средств такого типа, поставляемых по выбору или содержащихся в многочисленных пользовательских приложениях пакета Maple.
В данной курсовой работе были рассмотрены примеры решения минимаксных задач при помощи пакета программ Maple.
Благодаря повышению функциональности редактора повысилась надежность аналитических вычислений, написание программ и оформление рабочего документа Maple стали более удобными.
Особенно важно то, что Maple - не просто калькулятор, способный аналитически решать многие задачи, а легко обучаемая система. Совершенно ясно, что как бы ни была совершенна программа, всегда найдется много специальных задач, которые оказались за пределами интересов разработчиков. Усвоив несложный, но эффективный язык Maple, пользователь может изменить существующие процедуры или пополнить систему новыми, приспособленными для решения нужных ему задач. Эти процедуры можно включить в одну из библиотек, снабдить подсказками, так что они гармонично впишутся во всю систему. Мне кажется, что именно по этой причине система приобрела большую популярность.