Математика на PC

pic

(Продолжение.Часть 3. Пакет Maple )

Не все то золото, что блестит
Народная мудрость.

В наших прошлых публикациях было вкратце рассказано о самых популярных математических программах, а вернее — программных пакетах Matlab и MathCAD. В этой статье мы попытаемся рассмотреть основные возможности третьего великого «М», на котором базируется компьютерная математика наших дней — Maple 7.
Программный пакет Maple выпускается канадским университетом Ватерлоо в сотрудничестве с Numerical Algorythms Group (Группой Численных Алгоритмов) с 1998 г. Вообще-то в этом году была выпущена уже шестая версия программы, но только она позволила Maple начать свое триумфальное шествие по миру, поскольку лишь в ней несложный и дружественный интерфейс наконец-то соединился с мощнейшими алгоритмами вычислений.

Иконка пакета (кленовый лист) символизирует его происхождение. Щелкнем по ней и откроем основное окно программы (рис.1).

pic

При ближайшем рассмотрении видно, что Maple представляет собой оболочку для языка программирования (как и Matlab). Однако его интерфейс отличается особыми галочками, которые означают начало нового оператора, и скобками на левой стороне, ограничивающими так называемую выполняющуюся группу (Executable Group). Такой группой может быть какая-то математическая операция: прорисовка графика, умножение матрицы данных на число и так далее. Это очень удобно: среди огромного количества самых разнообразных вычислений и программных кодов гораздо легче ориентироваться, когда они как-то разграничены визуально.
Язык программирования Maple очень легок, даже, по-моему, легче, чем Matlab. В него введены математические символы, которые можно набрать на клавиатуре, например знак факториала «!» (рис.1), степень «^». Основные операторы также просты, многие такие же, как и в других языках, например оператор квадратного корня «sqr» и другие.

Наверняка любознательный читатель, не дожидаясь инструкций, попробует сам поковыряться в интерфейсе программы и файлах помощи. И если не искушен в математике (и английском языке), то очень сильно разочаруется. Нигде нет никаких упоминаний о структурном моделировании и библиотеках функциональных блоков, как в Matlab, не видно панелей выбора вида графиков и вставки готовых функций, или единиц измерения, как в MathCAD. Да к тому же программный язык запоминать надо! Тоска, одним словом…

Действительно, при беглом знакомстве Maple смотрится этаким «бедным родственником» по сравнению со своими более «навороченными» собратьями. Но не будем торопиться с выводами. Язык программирования, как было уже сказано, простейший, а что касается вычислительных и графических возможностей, то эти статьи и пишутся, чтобы их рассмотреть. Итак, сначала сделаем простейшее вычисление: узнаем, чему равно произведение. В Maple это записывается так, как на рис.2.

pic

Записав выражение, ставим после него «;». Это знак программе, что написанное надо выполнять — рассчитывать, чертить и так далее. Нажимаем Enter — и тут же появляется ответ, записанный синим шрифтом.
Теперь что-нибудь посложнее, например факториал. Не всякий может даже представить, каким он будет для сравнительно небольшого числа, например для 200. А Maple вычисляет его практически мгновенно (рис.3).

pic

Но это все достаточно стандартные операции. А наш «герой» — это не просто калькулятор в командной строке. Доказательством этому послужит следующая операция.
Все математические программы, как правило, вычисляют значения различных функций достаточно точно — чуть не до 10-го знака после запятой. А вот приблизительные значения человеку чаще всего приходится прикидывать самому, причем в каждом случае — приближение различно. А вот Maple умеет делать такие прикидки с помощью одного-единственного оператора. Определим функцию. Набирается она так, как показано на рис.4.

pic

Нажимаем Enter и получаем ответ — кстати, в достаточно стандартной форме, где программа не берет на себя лишний труд, оставляя квадратный корень из 3 без изменений. Но для дальнейших вычислений нам нужен результат приближенный, в форме десятичной дроби (или, как выражаются профессионалы, с плавающей точкой). Все эти вещи делаются одним оператором оценки функции — evalf.
В принципе, «фирменная» черта Maple — это оптимизация именно для вычислений с плавающей точкой. Помимо оператора evalf существует еще большое число операторов для всевозможных линейных и нелинейных приближений и преобразований. Можно различными путями определить, до какого знака определять приближенный результат. Можно сначала записать оператор оценки, а потом — одну или несколько нужных функций, обозначить точность, до которой следует округлять данное число и много других параметров.
В Maple есть и еще одна «изюминка» — это специальные алгоритмы работы с бесконечными последовательностями. Большинство программ, в том числе Matlab и MathCAD, имеют довольно сложную процедуру вычисления этих последовательностей, например, числовых рядов, а в MathCAD может даже «подвиснуть» при подсчете некоторых из них (о чем предупреждает Help). Maple же умеет не только округлить значение суммы бесконечного ряда, но и облечь его в удобоваримую форму. Чтобы не быть голословным, приведу пример подсчета суммы бесконечного ряда. Возьмем выражение типа, где k — любое число. Для простоты пусть первым числом будет 1, а последним — бесконечность.
Тем, кто хоть немного знаком с высшей математикой, не составит особого труда подсчитать предел этой функции, то есть выяснить, к какому числу стремится ее значение, когда значение k стремится к бесконечности. Но вычислить сумму всего ряда, хотя бы даже для целых чисел, уже посложнее. А в Maple это все делается одним оператором sum (рис.5).

pic

Если нам понадобится, мы можем перевести число в форму десятичной дроби, как делали раньше.
Теперь перейдем к не менее интересной части программы — графикам. Maple поддерживает как двумерные, так и трехмерные изображения. Хотя возможности по форматированию и визуализации данных здесь победнее, чем в MathCAD и Matlab, тем не менее, все графики можно «раскрасить» различными цветовыми схемами (вроде colormap в Matlab), различными способами поворачивать и рассматривать, а также анимировать, регулируя при этом скорость воспроизведения. Также можно менять освещение, что особенно важно для трехмерных поверхностей.
Что интересно — если мы хотим начертить семейство кривых, в Maple при задании функции достаточно просто задать интервал ее аргументов и, если необходимо, уточнить шаг, через который программа будет строить график функции. Так мы и поступим: вместо того, чтобы начертить, скажем, одну тангенсоиду, сделаем их несколько на определенный интервал. Результат будет таким, как на рис.6.

pic

Оператор discont определяет, что данная функция прерывна. Если тангенс, который, как известно, имеет разрывы, определить непрерывным, убрав этот оператор, то программа выведет нам вместе с графиком функции еще асимптоты, которые при рассмотрении будут изрядно мешать. Если желаете, убедитесь в этом самостоятельно.
Каждый график в Maple очень просто анимировать. Правда, это происходит только в среде самой программы, изображения можно экспортировать только в «неподвижные» форматы (GIF, JPEG и др.). Тем не менее у анимационного режима довольно широкие возможности: можно задать количество кадров в секунду, увеличить или уменьшить скорость анимации, а трехмерные тела рассматривать под различными углами зрения.
Для того, чтобы создать анимируемый график, в Maple нужно вызвать специальный пакет (package) — сборник различных функций и процедур для работы в какой-то одной узкой области (что-то вроде toolboxes в Matlab). Пакет для работы с графиками так и называется — plots и вызывается оператором with. Существуют и пакеты для работы в областях статистики, финансов и тому подобное. Как это сделать, показано в примере на рис.7.

pic

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

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

pic

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

pic

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

pic

Наш рассказ будет неполным, если не упомянуть о возможностях решения уравнений в среде Maple. Для простого программного языка они неожиданно велики. Начнем хотя бы с того, что программа отображает решение любого уравнения во вполне приемлемом виде, хотя записывать их приходится все-таки в программном коде. Например, сравнительно несложное уравнение записывается, как показано на рис.11.

pic

После нажатия Enter уравнение показано в общепринятом виде, а потом решено относительно х оператором solve.
Примерно таким же образом Maple решает и целые системы уравнений (рис.12).

pic

С дифференциальными уравнениями любых порядков тоже нет никаких трудностей.
На рис.13 показаны запись и решение системы дифференциальных уравнений .

pic

Здесь программа даже расставила коэффициенты (которыми обычно бывают некоторые числа) в решении!
И напоследок несколько приятных мелочей. Для особо трудолюбивых вычислителей специалисты Numerical Algorythms Group предусмотрели даже такую функцию, как сокращение лишних членов в дробях! При решении обычным путем нужно выносить общие множители за скобки, потом сокращать их. А в Maple все это делается одним оператором normal.

pic

Очень легко работать и с комплексными числами, где мнимая часть обозначается латинской буквой I. А потом можно конвертировать результат из декартовых координат в полярные (рис.15).

pic

Maple также поддерживает разнообразные операции с массивами данных, как и другие рассмотренные нами программные пакеты. К тому же он имеет «повышенную проходимость» — в отличие от других программ работает даже в режиме командной строки (рис.16)!

pic

Можно добавить напоследок, что этот пакет специально создавался и совершенствовался для работы в различных сетях — от локальных до Internet.
Поэтому в нем очень удобно обустроен обмен данными как между отдельными машинами, так и между сетями.
Как видно, мал золотник, то бишь Maple, да дорог. Правда, не стану отрицать, что эта программа предназначена, прежде всего, для математических расчетов — для прикладного применения или создания моделей она не приспособлена. Применения, конечно, бывают разные — например, в области финансов и статистики он часто оставляет позади всех своих основных конкурентов.

Orphus system