Обзор систем компьютерной математики
Целью данного курса является приобретение практических навыков работы с современными математическими пакетами. Что такое математический пакет? Если коротко – это программный продукт, позволяющий общаться с персональным компьютером на языке математики, а не программирования.
В конце 50-х годов, в связи с решением задач небесной механики (рас-чет траекторий движения), многими исследователями была осознана необходимость автоматизировать длинные математические выкладки, как следствие начали появляться первые компьютерные системы для символьных (аналитических) преобразований на ЭВМ.
Создание подобных компьютерных систем породило новую ветвь математики, которую стали называть компьютерной алгеброй, соответствующие программные продукты получили названия «Системы компьютерной алгебры» (СКА). В данном курсе используется также более широкое понятие – «Системы компьютерной математики» (СКМ).
В последние годы системы компьютерной алгебры (символьных или аналитических вычислений) стали доступны не только узкому кругу специалистов, но и всем обладателям персональных компьютеров.
В литературе различают универсальные и специализированные СКМ.
В данном курсе рассматриваются универсальные СКМ.
Под универсальной СКМ понимаются, как правило, программные продукты, позволяющие проводить алгебраические преобразования над объектами достаточно общей, в математическом смысле, природы.
Современные СКМ не ограничиваются простейшими действиями и упрощением выражений.
Возможности, представляемые пользователю современными СКМ охватывают многие разделы алгебры и математического анализа. Во многих системах можно выполнять:
– арифметические операции с целыми (произвольной длины), рациональными, действительными и комплексными числами;
– алгебраические операции с полиномами и рациональными функциями одной или нескольких переменных;
– вычислять наибольший общий делитель полиномов;
– выполнять факторизацию над полем рациональных чисел.
Многие действия математического анализа доступны СКМ:
– дифференцирование, включая нахождение частных производных;
– интегрирование элементарных функций;
– разложение в ряды и многое др.
В СКМ имеются встроенные операции над матрицами с символьными элементами:
– решение систем линейных алгебраических уравнений.
Пользователь СКА обладает возможностью:
– управлять процессом упрощения математических выражений;
– выделять части формул;
– получать численные значения формул.
Как правило, СКМ предоставляют возможность определять новые (собственные) функции, которые затем используются наравне со встроенными.
Одно из основных отличий СКМ от традиционных систем программирования связано с процессом численного решения уравнений. Обычно значения вычисляются в 2 этапа, в начале вместо входящих в выражения переменных подставляются их значения, а затем вычисляется все выражение.
СКМ же, например, при решении линейных алгебраических уравнений выделит все его точные рациональные и алгебраические решения, даже если коэффициенты уравнения зависят от буквенных параметров, в то время как, самое большее на что можно рассчитывать, используя численные методы – это протабулировать решение уравнения при различных значениях этих параметров.
Важным достоинством СКМ являются развитые 2-х и 3-х мерные графические возможности.
Многие современные СКМ обладают возможностями хороших текстовых редакторов, что позволяет использовать их при подготовке научных публикаций.
Основу СКА составляют глубокие математические результаты из коммутативной алгебры, алгебраической геометрии, математической логики, математического анализа, дифференциальных уравнений, теории алгоритмов и др., однако современные СКМ позволяют использовать весь этот сложный математический аппарат без изучения самих алгоритмов на профессиональном уровне.
Наиболее известными на сегодняшний день среди универсальных СКМ являются MatLab, MathCAD, Maple, Mathematica и Derive.
MATLAB выполняет множество компьютерных задач для поддержки научных и инженерных работ, начиная от сбора и анализа данных до разработки приложений. Среда MATLAB объединяет математические вычисления, визуализацию и мощный технический язык. Встроенные интерфейсы позволяют получить быстрый доступ и извлекать данные из внешних устройств, файлов, внешних баз данных и программ.
MATLAB имеет широкий спектр применений, включая цифровую обработку сигналов и изображений, проектирование систем управления, естественные науки, финансы и экономику, а также приборостроение. Открытая архитектура позволяет легко использовать MATLAB и сопутствующие продукты для исследования данных и быстрого создания конкурентоспособных пользовательских инструментов.
– быстрые и точные численные алгоритмы;
– графика для анализа и отображения данных;
– интерактивный язык и среда программирования;
– инструменты для настройки пользовательских интерфейсов;
– интерфейсы с внешними языками, такими как С, С++, Fortran и Java;
– поддержка импорта данных из файлов и внешних устройств плюс доступ к базам данных и вспомогательному оборудованию при помощи приложений;
– преобразование MATLAB приложений в С и С++.
Численные алгоритмы быстрые, точные и надежные. Эти алгоритмы, разработанные экспертами в математике, являются фундаментом языка MATLAB. Математика оптимизирована для матричных и векторных операций, так что она может быть использована вместо языков более низкого уровня, подобных С и С++, при этом получается та же скорость вычислений при значительной экономии времени на программирование.
Mathcad – это многофункциональная интерактивная вычислительная система, позволяющая, благодаря встроенным алгоритмам, решать аналитически и численно большое количество математических задач не прибегая к программированию. Рабочий документ Mathcad – электронная книга с живыми формулами, вычисления в которой производятся автоматически в том порядке, в котором записаны выражения. Отличается простым и удобным интерфейсом, написанием выражений стандартными математическими символами, хорошей двух- и трехмерной графикой, возможностью подключения к распространенным офисным и конструкторским программам, а также к Internet.
Программа Mathcad сочетает в себе набор мощных инструментов для технических расчетов с полиграфическим качеством написания формул и гибкий, полнофункциональный текстовый редактор. С помощью эффективной среды решения задач программы Mathcad можно выполнять работу и демонстрировать результаты в одном и том же документе – на рабочей страннице Mathcad. В отличие от другого технического программного обеспечения Mathcad осуществляет математические расчеты в той же последовательности в которой Вы их записываете. Вводятся уравнения, данные для построения графика функции и текстовые примечания в любом месте страницы, при этом математические выражения в Mathcad записываются в полиграфическом формате. Единственная разница с обычным текстом, включающим математические формулы и графики состоит в том, что Mathcad уравнения и графики – «живые». Изменение значений переменных, данных графика или уравнений приведет к немедленному перевычислению рабочей страницы.
Maple – это мощная вычислительная система, предназначенная для выполнения сложных вычислительных проектов как аналитическими так и численными методами. Maple содержит проверенные, надежные и эффективные символьные и численные алгоритмы для решения огромного спектра математических задач, включая широко известные библиотечные численные алгоритмы компании NAG (Numeric Algorithm Groop). Maple умеет выполнять сложные алгебраические преобразования и упрощения над полем комплексных чисел, находить конечные и бесконечные суммы, произведения, пределы и интегралы, решать в символьном виде и численно алгебраические (в том числе трансцендентные) системы уравнений и неравенств, находить все корни многочленов, решать аналитически и численно системы обыкновенных дифференциальных уравнений и уравнений в частных производных. В Maple включены пакеты подпрограмм для решения задач линейной и тензорной алгебры, Евклидовой и аналитической геометрии, теории чисел, теории вероятностей и математической статистики, комбинаторики, теории групп, интегральных преобразований, численной аппроксимации и линейной оптимизации (симплекс метод) а также задач финансовой математики и многих, многих других задач.
Maple обладает также развитым языком программирования. Это дает возможность пользователю самостоятельно создавать команды и приложе- ния и таким образом расширять возможности Maple для решения специальных задач.
Для технических применений в Maple включены справочники физических констант и единицы физических величин с автоматическим пересчетом формул. Хороший текстовый редактор, полиграфическое качество формул и превосходная двух- и трехмерная графика позволяют профессионально оформить выполненную работу и сохранить ее либо в виде электронного документа (HTML) для опубликования в Интернет либо стандартного текстового документа (rtf).
Mathematica является одной из универсальных математических систем, которая дает возможность решать большое количество весьма сложных задач не вдаваясь в сложности программирования. В ряду себе подобных Mathematica является одной из самых мощных и детально разработанных. С ее помощью легко осуществляются численные и символьные вычисления. Сильной стороной системы, выгодно отличающей ее от остальных, является двух и трехмерная графика, применяемая для визуализации кривых и поверхностей в трехмерном пространстве.
В среде Mathematica содержится язык программирования современного высокого уровня с более емким и естественным функциональным стилем и стилем правил преобразований.
Система интерактивна (то есть работает в режиме постоянного диалога с пользователем). Она гибка и универсальна в том смысле, что может быть использована всеми желающими, как студентами, так и профессионалами математиками и другими специалистами, работа которых связана с математикой.
DERIVE – самая маленькая из систем компьютерной алгебры. Последняя версия Derive под MS-DOS может работать на «древних» ПК даже без жесткого диска, целиком помещаясь на загрузочной дискете. При этом система имеет многооконный интерфейс и управляется простой системой меню. Derive тщательно опробованная, надежная и быстрая система. Ядро Derive cодержит около 1000 функций и 23 тысячи строк программного кода. Удивительная компактность ядра связана с использованием языка программирования экспертных систем LISP.
Derive является универсальной математической системой, ориентированной на решение широкого круга математических и научно-технических задач. Современные версии Derive – это расширяемые системы, способные легко адаптироваться под решение специальных задач. Они поставляются с развитой библиотекой функций, существенно расширяющей возможности системы. Derive позволяет готовить расширения и записывать их в виде файлов.
Первый этап – компьютер , оправдывая свое название (в переводе с англ. "вычислитель"), работал как мощный программируемый калькулятор, способный быстро и автоматически ( по веденной программе) выполнять сложные и громоздкие арифметические и логические операции над числами.
Успехи вычислительной математики и постоянно совершенствующиеся численные методы позволяют решить таким способом любую математическую задачу применительно к любой отрасли знаний. Важно отметить, что результат вычислений при этом представляется одним конечным числом в арифметическом виде, то есть при помощи десятичных цифр. Иногда результат представляется множеством (массивом, матрицей) таких чисел, но существо представления от этого не меняется – результат в виде конечного десятичного арифметического числа.
Однако такой результат часто не удовлетворял профессиональных математиков, и вот почему. Подавляющее большинство результатов нетривиальных математических вычислений в классической математике традиционно записывается в символьной форме: с использованием специальных общеизвестных чисел: , , , а иррациональные значения – с помощью радикала. Считается, что в противном случае имеет место принципиальная потеря точности .
Другой классический пример, вызывающий замечание математика – выражение , знакомое любому школьнику:
На этом первый этап завершился.
Естественно, вслед за стремительным совершенствованием компьютерных систем человеку в компьютерных расчетах захотелось большего: почему бы не заставить компьютер выполнять преобразования традиционными для математики способами (дробно-рациональные преобразования, подстановки, упрощения, решение уравнений, дифференцирование и т.п.).
Их принято называть преобразованиями в символьном виде или аналитическими преобразованиями, а результат получать не как раньше – в виде одного числа, а в виде формулы.
К этому моменту практически все области человеческой деятельности оказались охваченными каждая своим собственным математическим аппаратом и обзавелись собственными пакетами прикладного программного обеспечения (ППО). При этом всем понадобился универсальный математический инструмент, ориентированный на широкий круг пользователей, которые не являются ни профессионалами в математике, ни программистами, воспитанными на узкоспециальных, малопонятных большинству конечных пользователей компьютерных языках.
Это привело к созданию компьютерных систем символьной математики, рассчитанных на широкие круги пользователей – непрофессионалов в математике. Так началась с середины 60-х годов ХХ века эра систем компьютерной математики (СКМ), по -английски CAS – Сomputer algebra system .
В конце 60-х годов в России на отечественных ЭВМ серии "Мир", разработанных под руководством академика В. Глушкова, была реализована СКМ на языке программирования " Аналитик ", обладающая всеми возможностями символьных вычислений, впрочем, с весьма скромными, по нынешним понятиям, характеристиками.
Конечно, даже самые простые неинтеллектуальные компьютерные математические справочники представляют большой практический интерес – ведь ни один самый способный человек не в состоянии вместить в своей голове все математические законы и правила, созданные за многовековую историю человечества.
Данные об особенностях существующих СКМ приведены в табл. 12.1.
Рассмотрим внутреннюю архитектуру СКМ на примере наиболее мощной, по мнению ряда авторитетных специалистов [6], СКМ Mathematica, обладающей наиболее развитой системой символьной математики. На рис.12.1 представлена ее программная архитектура .
Центральная часть – ядро ( Kernel ) системы СКМ реализует алгоритм функционирования СКМ, обеспечивает совместное функционирование всех ее частей, организует прием и интеллектуальную обработку запроса пользователя, а затем – вызов нужной процедуры решения. В ядре помещается большое количество встроенных функций и операторов системы. Их количество в современных СКМ может достигать многих тысяч. Например, ядро системы Mathematica 4 содержит данные более чем 5000 одних только интегралов, хотя для интегрирования используются только несколько встроенных функций.
Поиск и выполнение функций и процедур, встроенных в ядро СКМ, выполняется быстро, если их там не слишком много. Поэтому объем ядра ограничивают, но к нему добавляют встроенные в СКМ библиотеки процедур и функций, использующихся относительно редко. При этом общее число доступных пользователю математических функций ядра и этих встроенных библиотек достигает многих тысяч.
Кардинальное расширение возможностей СКМ и их приспособленность к нуждам конкретных пользователей для углубленного решения определенного круга задач (например, задач теоретической и прикладной статистики, векторного анализа) достигается за счет установки внешних пакетов расширения. Эти пакеты, приобретаемые отдельно, делают возможности СКМ практически безграничными.
Все эти библиотеки, пакеты расширений и справочная система современных СКМ (назовем их инструментами СКМ) содержат не только и не просто знания в области математики, накопленные за много веков ее развития (этим никого не удивишь: именно такие возможности характерны для широко распространенного класса ИПО – информационно-поисковых систем). Но восхищает, что эти инструменты удивительным образом автоматически и творчески используют такие знания для решения задач, где нужно выбрать и уметь применить один, единственный из многих десятков, неочевидный метод решения . Например, СКМ могут мгновенно найти неопределенный интеграл либо сразу же сообщить о невозможности его представления элементарными функциями – задача непростая, даже для профессионального математика . Не менее впечатляет и то, что если после получения искомой формулы перейти к началу документа и задать входящим в эту формулу параметрам конкретные числовые значения, мгновенно будет получен ее численный результат. В состав любой СКМ входит набор редакторов (на рис.12.1 они названы редакторами по направлениям): текстовый, формульный, графический редакторы, средства поддержки работы в сети и HTML ( XML )-средства, пакеты анимации и аудиосредства.
Благодаря всем этим возможностям СКМ могут быть отнесены к программным продуктам самого высокого на сегодняшний день уровня – интеллектуального. Такие программы в настоящее время объединяются термином "базы знаний". Современные СКМ, по мнению признанных авторитетов [6, 7], предоставляет неискушенному пользователю возможности выпускника математического вуза в областях численных методов расчета, математического анализа, теории матриц и других общих разделах высшей математики, позволяющих получить конструктивные результаты.
Конечно, в абстрактных разделах математики, типа функционального анализа или вопросов "существования и единственности. " СКМ пока вряд ли могут быть полезны (кроме как для предоставления нужной справки, что очень даже немало), но в прикладных задачах, для которых СКМ и создавались, такие разделы математики обычно не задействованы.
12.2. Интегрированная Среда СКМ MathCad
Интегрированная Среда СКМ MathCad является системой СКМ универсального назначения и наиболее приспособлена для решения широкого спектра, а точнее –практически любых математических задач, в основном непрофессиональными математиками, а также для эффективного использования во всех областях сферы образования.
По сей день они остаются единственными математическими системами, в которых описание решения математических задач дается с помощью привычных математических формул и знакомых символов. Такой же вид имеют и результаты вычислений. СКМ MathCad не очень подходит для серьезной профессиональной научной деятельности математиков, она больше предназначена для решения не слишком изощренных математических задач, выполнения технических расчетов любой сложности, а главное – не имеет конкурентов в области образования. Благодаря высоким характеристикам, СКМ MathCad полностью оправдывает термин " CAD " в своем названии ( Computer Aided Design), подтверждающий принадлежность к классу наиболее сложных и совершенных систем автоматического проектирования – САПР . Система MathCad является типичной интегрированной системой, то есть объединяющей в своем составе несколько обособленных программных средств для решения определенного круга самостоятельных задач.. Первоначально она была предназначена для сугубо численных вычислений и ориентирована под MS-DOS , но, начиная с версии 3.0 (1990 г.), работает под ОС Windows и имеет достаточно широкий набор средств для символьных и графических вычислений.
Все действия в СКМ MathCad сразу оформляются в виде документа, состоящего из рабочих листов, на которых помещается описание алгоритма, рабочие формулы, комментарии, иллюстрации, графики, таблицы. Форма такого документа максимально приспособлена для печати, передачи по сети Internet и не требует дополнительного редактирования. С другой стороны, этот документ, имеющий расширение .mcd, содержит в скрытом виде всю программу вычислений. Он может быть импортирован как для целей издания, так и для продолжения и совершенствования программных вычислений. Весь документ или отдельные его части могут быть заблокированы для редактирования путем задания пароля.
На рис.12.2 приведена архитектура СКМ MathCad . Центральным блоком являются два ядра: собственно ядро СКМ и ядро символьных вычислений, аналогичное СКМ Maple , приобретенное у разработчика – фирмы Waterloo Maple .
Встроенные в среду MathCad электронные книги (e-Books) содержат примеры, справки и типовые расчеты из различных областей науки, техники, экономики. Любой фрагмент из этих книг можно скопировать на рабочий лист документа и выполнить.
Библиотеки и пакеты расширений, ориентированные на решение различных прикладных задач, поставляются и устанавливаются разработчиком отдельно.
Мощный интерфейс СКМ MathCad не требует программирования при вводе заданий и индикации результатов – все это выполняется в традиционной форме на общепринятом языке математических символов и формул без применения каких-либо специальных команд или операторов. Показательно, что в каждом алгоритмическом языке простое возведение в степень, в меру фантазий разработчиков языка, выполняется при помощи уникальных собственных условных обозначений – всевозможных стрелочек, крышечек, двойных звездочек и Бог знает чего еще, а то и вовсе отсутствует и требует вызова специальных функций – как в языках семейства Си . В MathCad эта операция имеет привычный вид.
Интерфейс является визуальным – то есть практически любые действия в СКМ можно выполнять без помощи клавиатуры, просто выбирая нужные пункты меню или инструменты на панелях. В этом интерфейсе реализован принцип " WYSIWYG " – что видим на экране, то и получаем в работе и при выводе.
Интерфейс интеллектуален – конечно, здесь далеко до интеллекта Visual Studio-2010, но во многих случаях он не допустит ошибочных действий пользователя.
Упомянутый входной язык ввода является интерпретирующим, то есть промежуточные результаты появляются по мере ввода очередной формулы. Сама же СКМ MathCad написана на одном из самых мощных языков – С++. По мере того, как пользователь набирает на рабочем листе текст алгоритма вычислений, среда сама составляет скрытую программу на промежуточном языке связи, которая затем сохраняется в виде файла с расширением .mcd. К сожалению, исполняемого файла с расширением .ехе пакет MathCad не формирует – для работы с импортированным документом необходимо наличие установленного приложения MathCad . А вот вставить образ документа либо отдельный его фрагмент в текстовый редактор , например, MS WORD , через системный буфер никакого труда не представляет. Именно так и вставлялись все иллюстрации в этой главе. Рекомендую после такой вставки фрагмента вызвать на нем контекстное меню – пункт "Формат рисунка…/Размер" и установить в окне "Масштаб по высоте" 128% – для шрифта 12-го кегля наиболее подходящий.
Объектами рабочего листа могут быть формульные текстовые или графические блоки. Действия над блоками выполняются в строгом порядке слева направо, сверху вниз. Блоки, готовящие операции , должны предшествовать выполнению этих операций. При этом организована сквозная передача данных от одного объекта к другому. Изменение входных данных мгновенно обеспечивает пересчет результатов.
Контент (содержание) этой СКМ можно рассматривать в качестве исключительно мощного справочного средства по математике. Кроме того, в СКМ MathCad интегрированы формульный, текстовый и графический редакторы, позволяющие упростить ввод многоэтажных сложнейших формул и получить итоговый документ. Промежуточные действия в ходе символьных преобразований в СКМ MathCad скрыты от пользователя, но не следует забывать, что для получения конечного результата используются сложнейшие рекурсивные алгоритмы, мало знакомые широкому пользователю и зачастую не оптимальные на взгляд математика . При этом никто не запрещает пользователю пошаговое выполнение и индикацию знакомых из литературы алгоритмов, что значительно упрощает решение при известном конечном результате. В СКМ MathCad не создается итоговый исполняемый *.exe файл , значит, для просмотра готового (например, импортированного) документа требуется наличие установленного пакета СКМ MathCad .
Перечислим основные возможности Среды MathCad .
Общие возможности
- Разработка и редактирование документов, содержащих как математические формулы любой сложности, так и все встроенные инструменты Среды MathCad . Подготовка этих документов к изданию или передаче по сети Internet.
- Использование общепринятого расширяемого языка разметки XML как универсального способа организации обмена данными с другими приложениями. Это позволяет преобразовывать файлы MathCad в HTML-страницы и в формат PDF.
- Возможность вставки в документ широкого спектра объектов (см. рис.12.3.)
- Разработка веб-документов и сетевые возможности по их пересылке, получению обновлений и поддержки.
- Получение документов MathCad по сети и выполнение расчетов в этих документах.
- Получение через Internet и подключение новых книг расширения для реализации дополнительных возможностей среды MathCad .
- Доступный официальный форум.
- Использование серверных услуг среды MathCad ( Mathcad Application Server) – удаленное подключение к пакету MathCad в полной комплектации через стандартный веб-браузер Internet, даже если MathCad не установлен на компьютере.
- Импорт документов из MS Access и MS Excel и математическая обработка данных из этих документов.
- Наличие обширных справочных материалов по математике и основных физических констант, а также большое количество задач с готовыми решениями по многим разделам науки и техники.
- Выполнение вычислений любой сложности – использование среды MathCad в качестве сверхмощного научного интеллектуального калькулятора с применением богатой библиотеки встроенных функций ( более 680; для сравнения, в MS Excel их около 200), с точностью до 17 значащих цифр (а при использовании специальных операторов – и до 250) и с неограниченными возможностями запоминания промежуточных результатов. При этом имеется возможность вычислений как по введенной в документ формуле целиком, так и по отдельному, выделенному фрагменту формулы.
- Использование графического редактора для построения двумерных и трехмерных графиков любой сложности, наглядных диаграмм и не только для простого построения, но и для связи графика с формулой, при которой изменение параметра сразу отражается на кривой графика. Имеется также возможность создание объектов движущейся анимации и просмотра импортированных файлов, например, видеофильмов в формате AVI при помощи встроенного в среду MathCad проигрывателя Playback .
- Действия с размерностями.
Численные методы вычислений
- Решение уравнений и систем уравнений, как линейных, так и нелинейных. Нахождение корней многочлена.
- Решение неравенств.
- Вычисление определенного интеграла.
- Вычисление несобственных интегралов.
- Вычисление кратных интегралов.
- Численные методы дифференцирования.
- Численное решение обыкновенных дифференциальных уравнений – задача Коши.
- Численное решение обыкновенных дифференциальных уравнений – решение краевой задачи.
- Решение дифференциальных уравнений в частных производных.
- Вычисление суммы и произведения членов ряда.
- Исследование функций и численное определение экстремумов функций одной и нескольких переменных, построение асимптот .
- Решение оптимизационной задачи методом линейного программирования.
Символьные вычисления
- Выполнение точных вычислений с представлением результатов в традиционной математической форме – с записью ответа в форме радикала и специальных иррациональных чисел , , .
- Символьные преобразования математических выражений целиком или их фрагментов:
- разложение выражений в более простые;
- приведение подобных;
- разложение на множители;
- приведение к общему знаменателю;
- вынесение общего множителя;
- разложение на элементарные дроби;
- вычисление коэффициентов полиномов;
- выполнение подстановок.
Работа с матрицами и матричные вычисления
- Элементарные матричные действия: создание, импорт, заполнение матриц, задание матриц специального вида, умножение, сложение, транспонирование и сортировка матрицы в целом или ее фрагмента. Выполнение векторизации – однотипных действий над всеми элементами матрицы.
- Вычисление определителя, размерности, ранга и следа матрицы, скалярное и векторное умножение векторов, вычисление якобиана, например, для перехода к другим системам координат в тройном интеграле. Вычисление собственных значений и собственных векторов , поиск максимального и минимального элемента матрицы.
- Матричные преобразования: скалярное и векторное умножение векторов, поиск обратной матрицы и решение системы алгебраических линейных уравнений, всевозможные разложения матрицы на произведение матриц специального вида: двух треугольных – верхней и нижней (LU-преобразование), треугольной и ее же транспонированной (разложение Холецкого), ортогональной и верхней треугольной (QR-разложение), сингулярное разложение.
- Интегрирование среды MathCad с матричной математической системой MATLAB и возможность использования ее аппарата открывает удивительные возможности эффективного решения матричных задач неограниченной сложности.
Решение дифференциальных уравнений
Программирование
Составление программ и выполнение расчетов на упрощенном процедурном алгоритмическом языке с возможностью использования всех процедурных конструкций: условных операторов, циклов, массивов, модуль-функций, модуль-процедур.
Комплексные числа
- Представление комплексных чисел в традиционной форме, возможность выполнения основных арифметических действия с ними.
- Возможность автоматического получения результатов многих вычислений в виде комплексного числа (например, всех корней многочлена).
- Возможность задания комплексного аргумента для многих библиотечных функций и получение математически корректного результата.
Обработка данных и финансовые расчеты
Теория вероятностей и математическая статистика
Математическое моделирование
Специальные возможности по прикладным инженерным и научным расчетам
На рынке современных математических систем в настоящее время присутствует целый ряд крупных фирм: Macsyma, Inc., Waterloo Maple Software, Inc., Wolfram Research, Inc., MathWorks, Inc., MathSoft, Inc., SciFace GmbH и др.
Mathematica
Mathematica имеет мощный графический пакет, с помощью которого можно строить графики очень сложных функций одной и двух переменных.
Macsyma
MuPAD
MuPAD является программным пакетом компьютерной алгебры, предназначенным для решения математических задач различного уровня сложности. Основные качественные отличия MuPAD — невысокие требования к ресурсам PC, наличие собственного ядра символьной математики, способность к развитию самим пользователем и мощные средства визуализации решения математических задач.
S-PLUS
S-PLUS представляет собой интерактивную компьютерную среду, обеспечивающую полнофункциональный графический анализ данных и включающую оригинальный объектно-ориентированный язык. Гибкая система S-PLUS может использоваться для исследовательского анализа данных, статистического анализа и математических вычислений, а также для удобного графического представления анализируемых данных.
2 – Программирование в MathCAD: операторы, примеры использования
Рассмотрим все команды из панели программирования Mathcad.
1. Add Line – добавить строку в текущую позицию программы. При вводе данной команды появляется или расширяется на одну строку вертикальная линия, объединяющая отдельные операторы в блок с одним входом и одним выходом, который выполняется как один оператор. Для того чтобы начать ввод подпрограммы, необходимо набрать имя программы и в скобках через запятую перечислить формальные параметры подпрограммы, ввести нужное количество раз команду Add Line. Программа выводит последнюю переменную, обрабатываемую программой перед выходом. Вместо имени подпрограммы можно указать имя переменной, куда необходимо вывести результат работы подпрограммы.
Напишем программу для решения квадратного уравнения ax2+bx+c=0. В программе при помощи операторов глобального присваивания задаются значения глобальных переменных a, b и c. Для сравнения введем еще локальную переменную k и присвоим ей значение 4. Далее вычисляем значение корней квадратного уравнения при помощи программы, состоящей из одного блока операторов. В программе применяются три оператора локального присваивания и возвращается значения вектора x, состоящего из двух чисел. После выполнения программы выводим значение всех переменных, используемых в программе. При этом значение всех локальных переменных D, x и k, заданных вне блока, программа не видит, поэтому вместо знака = выводится оператор глобального присваивания «:=». В этом случае значение переменной не выводится, а вместо него отображается красный прямоугольный маркер.
3. Оператор if предназначен для организации разветвляющихся вычислительных процессов.
Общий вид простого оператора if: D if L, L – логическое выражение; D – оператор, выполняемый в случае, если условие L принимает значение «истина».
Оператор работает следующим образом:
• вычисляется логическое условие L;
• если L – истина, то выполняется оператор D, в ином случае он не выполняется;
• выполнение программы продолжается со следующего, после if, оператора.
В сложных подпрограммах часто используется блочный оператор if:
Где D1, …, Dn – действия, выполняемые в случае, если логическое условие L истинно.
4. Оператор otherwise применяется в случае, когда используется условие с двумя вариантами действия, то есть, если условие истинно, нужно выполнить одно действие (или действия), а если ложно, то другое.
Общий вид такого оператора следующий:
5. Оператор for используется для создания циклических вычислительных процессов.
Где i – счетчик цикла. Переменная, которая меняется в диапазоне от k1 до kn. Диапазон изменения счетчика цикла вводится с помощью ранжированной переменной или с помощью вектора. D –действия, которые выполняются в цикле (тело цикла).
Приведём пример, в котором диапазон изменения счетчика цикла n задан с помощью вектора. Вектор вставляется с помощью панели инструментов Matrix.
Данная программа вычисляет сумму
6. Оператор цикла while используется тогда, когда цикл должен выполняться не заданное количество раз, а до тех пор, пока не будет выполнено определенное в цикле условие.
где L – условие, при выполнении которого выполняется цикл (условие цикла). В данном случае, действие D (тело цикла) выполняется до тех пор, пока условие L истинно. Если логическое условие L изначально ложно, то операторы, составляющие тело цикла, не будут выполняться, а управление передается на оператор следующий за оператором while.
Приведем пример программы, использующей цикл while.
В данной программе с указанной точностью (tol) вычисляется сумма s=1+1/2+1/3+1/4+1/5+1/6+1/7…
7. Оператор break обеспечивает экстренный выход из цикла. Программа при этом продолжает выполнять следующую после цикла строку. Данный оператор часто применяется, чтобы избежать «зацикливания» программы.
В качестве примера применения оператора break рассмотрим задачу вычисления суммы числового ряда
В приведенной ниже программе, суммирование членов ряда прекращается, когда достигается точность, указанная параметром tol или если число итераций цикла превышает 10000.
В данном случае оператор break исключается возможность зацикливания программы для расходящегося ряда.
8. Оператор continue возвращает управление в первую строку цикла. Как только этот оператор встречается в программе, выполнение текущей итерации прерывается и выполняется переход на следующую итерацию цикла. Выход из цикла не производится.
Данный оператор, как и оператор break, не содержит параметров.
Пример: Найти сумму N первых членов ряда: В программе, при помощи оператора continue, происходит обход слагаемого в котором знаменатель дроби равен нулю.
9. Оператор return прерывает выполнение программы. В качестве результата работы программы возвращается значение, указанное в позиции для ввода, после оператора return.
Пример. Подсчитать с указанной точностью tol сумму ряда:
10. Оператор on error отвечает за обработку ошибок. При выборе данного оператора в программу вставляется заготовка следующего вида: Общий вид оператора on error: D1 on error D2.
Решение задачи ЛП в MathCAD
В Mathcad к классу задач линейного программирования относятся задачи, в которых требуется оптимизировать (определить максимум или минимум) целевую функцию вида:
при следующих ограничениях:
Одним из способов решение подобных задач в Mathcad является использование блока given с функциями minimize и maximize .
Функции Minimize и Maximize, которые могут быть использованы как сами по себе, так и совместно с блоком given. Аргументы функций: имя функции, экстремум которой ищется, и список ее аргументов.
- Minimize (y,x) - для отыскания значения х, соответствующего локальному минимуму функции у(х);
- Maximize (y,x) - для отыскания значения х, соответствующего локальному максимуму функции у(х).
Так как у(х) может иметь несколько локальных экстремумов, а функции Minimize (y,x) и Maximize (y,x) позволяет найти только одно значение, то в Mathcad дополнительно задается начальное приближение переменной х. В результате находится значение экстремума функции y(x), ближайшее к заданному начальному приближению переменной х.
В качестве примера рассмотрим задачу планирования производства красок.
Суть задачи в следующем. Фабрика выпускает два типа красок - I и Е. Для производства красок используются два компонента - А и В. Максимальные суточные запасы этих компонентов: компонент А - 6 тонн; компонент В – 8 тонн. Расходы компонентов А и В на производство 1 тонны краски следующие: для краски I - A/B= 2/1; для краски Е - А/В = 1/2. Суточный спрос на краску I никогда не превышает спрос на краску Е более, чем на 1 тонну. Спрос на краску I никогда не превышает 2 тонн в сутки. Оптовые цены на краску I – 2000 рублей за тонну, а на краску Е – 3000 рублей за тонну. Определить максимальный доход фабрики от продажи краски. Обозначив суточный объем выпуска краски I за x1, а суточный объем выпуска краски Е за х2, получаем экономико - математическую модель задачи, вид которой представлен ниже:
Решение задачи ЛП в MatLAB
В среде MATLAB задачи линейного программирования решаются с помощью функции linprog.
Функция linprog решает задачу линейного программирования в форме:
Основными входными данными linprog являются: вектор коэффициентов целевой функции f, матрица ограничений-неравенств A, вектор правых частей ограничений-неравенств b, матрица ограничений-равенств Aeq, вектор правых частей ограничений-равенств beq, вектор lb, ограничивающий план x снизу, вектор ub, ограничивающий план x сверху. На выходе функция linprog даёт оптимальный план x задачи (1) и экстремальное значение целевой функции fval.
Пример: Решим в MATLAB задачу линейного программирования:
clc % удаляются все текущие переменные из памяти MATLAB, закрываются все графические окна, очищается экран консоли
GNU Octave — это высокоуровневый язык, ориентированный на численные вычисления. Язык совместим с языком Matlab. Доступны версии для ОС Linux, Windows, Mac OS X, Sun Solaris, OS/2.
Maxima — свободная система компьютерной алгебры, позволяющая проводить аналитические преобразования и численные вычисления. Maxima создана на основе системы компьютерной алгебры Macsyma, разработанной в конце 1960 гг. в Массачусетском технологическом институте (MIT). Доступны версии для ОС Linux, Windows, MacOS X.
Scilab — свободная платформа для численных расчетов. Поддерживается консорциумом Scilab. Доступны версии для ОС Linux, Windows, MacOS X.
R — свободная среда для проведения статистического анализа данных. Доступны версии для ОС Linux, Windows, MacOS X.
ROOT — это свободный объектно-ориентированный фреймворк, предназначенный для анализа данных. Разработан в CERN. Очень хорошо подходит для обработки больших объемов данных.
Python(x,y) — Это библиотека свободных и бесплатных программ, базирующаяся на языке программирования Python, предназначенная для проведения численных расчетов, анализа и визуализации данных. Включает библиотеку QT, IDE Eclipse, Spyder, Gnuplot, matplotlib и т.д. Доступны версии для ОС Linux, Windows.
SAGE — это свободная система компьютерной математики. С помощью единого интерфейса, основанного на языке Python, объединяет в себе большое количество свободных и открытых математических программ и библиотек. Доступны версии для ОС Linux, Windows, MacOS X.
Читайте также: