Maxima - минимализм в математике

Среди программного обеспечения для математических расчетов наиболее широко известны такие универсальные пакеты-комбайны, как Mathcad, Mathematica, Maple и др. Эти системы являются мощным инструментом для студента и преподавателя, инженера и ученого. Они позволяют провести с минимальными усилиями расчетную часть работы - самую рутинную и требующую повышенного внимания. По своим возможностям эти системы можно назвать средой программирования, с той лишь разницей, что в качестве элементов языка программирования выступают привычные для человека математические обозначения.

Однако у них у всех есть один недостаток - за них надо платить!

Программа, представленная в обзоре, по своим возможностям мало чем уступает таким монстрам, как Mathcad или Mathematica, но самое главное ее отличие в том, что она не является коммерческой и закрытой. Другими словами, речь идет о свободном ПО.

Проект, существующий в наши дни под именем Maxima, зародился в конце 60-х в легендарном MIT (Massachusetts Institute of Technology - Массачусетский Технологический институт), когда в рамках проекта по созданию искусственного интеллекта "MAC" (Machine Aided Cognition - познание с помощью машины) началась работа над программой символьных вычислений, которая получила имя Macsyma (от MAC's SYmbolic MAnipulation). Архитектура системы была разработана к июлю 1968 г., непосредственно программирование началось в июле 1969. В качестве языка для разработки системы был выбран Lisp.

Программа в течение многих лет использовалась и развивалась в университетах Северной Америки, где появилось множество вариантов системы.

Maxima является одним из таких вариантов, созданным профессором Вильямом Шелтером (William F. Schelter) в 1982 году. В 1998 году он получил официальное разрешение Министерства энергетики США, которое в тот момент курировало проект, использовать исходный код Macsyma под лицензией GNU Public License и в 2000 году положил начало проекту Maxima, преемнику Macsyma.

Принципы, положенные в основу проекта, позднее были заимствованы наиболее активно развивающимися ныне коммерческими программами - Mathematica и Maple. Можно сказать, что Macsyma фактически стала родоначальником всего направления программ символьной математики.

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

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

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

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

Для этого в строке ввода необходимо набрать "cos(%pi/4);" и нажать Shift+Enter.

В Maxima символами "%pi", а также "%е" обозначаются общеизвестные математические постоянные.

Если используется wxMaxima, то после вводимого выражения завершающий символ ";" можно не ставить, но в оболочке XMaxima, как и в командной строке, точка с запятой после вычисляемого выражения обязательна.

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

(%i2) cos(%pi/4),numer;

(%o2) 0.70710678118655

Имена функций и переменных в Maxima чувствительны к регистру, то есть прописные и строчные буквы в них различаются, и "Cos(%pi/4)" вместо "cos(%pi/4)" система не посчитает.

Для построения графиков используются две функции - "plot2D" (двумерные) и "plot3D" (трехмерные). Использование этих двух функций позволяет выводить графики разных типов на плоскости и в пространстве с достаточно широкими настройками. С помощью специальных операторов или аргументов функций задаются количество узлов сетки, на которой строится требуемый график, диапазоны данных, цветовые и другие характеристики.

Следующее выражение строит в рабочей области wxMaxima графики двух функций: sin(x) и cos(x) на интервале от -5 до 5. Интервалы отображения графика и дополнительные опции указываются в квадратных скобках через запятую.

(%i3) wxplot2d([sin(x),cos(x)], [x,-5,5], [y,-2,2], [gnuplot_preamble, "set zeroaxis;"]);

Вообще говоря, графические возможности не встроены в Maxima, а реализованы посредством внешних программ. По умолчанию, построением графиков занимается программа gnuplot, но, кроме нее, есть разрабатываемый вместе с Maxima и идущий в ее составе openmath. Собственно, при использовании функции "plot2d" откроется окно gnuplot, в котором и строится необходимый график. Функция же "wxplot2d" используется для построения графиков только в графической оболочке wxMaxima. Однако при использовании этой оболочки для построения графиков, да и не только, значительно удобнее использовать меню или кнопки панели инструментов. Формат экспорта Maxima весьма небогат: рисунки в программе сохраняются, по сути, только в PostScript. Вообще говоря, инструменты визуализации системы очень и очень скромны, хотя и дают возможность получить качественные графики некоторых типов.

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

(%i4) equation: x^2+2*x-15;

(%o4) x^2+2*x-15

После того, как мы присвоили переменной какое-либо выражение, ее в любой момент можно использовать, например, при вычислении первой производной:

(%i5) diff(equation, x);

(%o5) 2x+2

или неопределенного интеграла:

(%i6) integrate(equation, x);

(%o6)

и даже для решения алгебраического уравнения:

(%i7) solve(equation=0,x);

(%o7) [x = 3, x = -5]

Ту же функцию "solve" можно использовать и для решения систем алгебраических уравнений:

(%i8) solve([equation = y, x + y = 2], [x,y]);

(%o8) [[x = -5.887482193696061, y = 7.887482193696061],[x = 2.887482193696061, y = -0.88748219369606]]

Для решения более сложных уравнений следует использовать функцию "find_root":

(%i9) find_root (cos(x)+2*x= 0, x, -1, 1);

(%o9) -0.45018361129487

В скобках, после имени переменной, вводится интервал, на котором ищется корень - в данном случае от -1 до 1.

Рассмотрим другие графические оболочки системы Maxima.

Интерфейс XMaxima значительно примитивней wxMaxima и представляет собой окно, разделенное на две части: верхняя часть является рабочей областью, а нижняя - помощь.

Однако верхом аскетизма является консольный интерфейс.

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

Maxima является профессиональной системой, предназначенной для решения достаточно сложных математических задач, а также для графического отображения данных. Безусловно, Maxima не дотягивает до таких коммерческих продуктов, как Mathcad или Mathematica, но ее достоинства - бесплатность и небольшой размер (maxima.sourceforge.net, 22 MB) - делают систему Maxima неплохим инструментом для использования и в учебных целях, и для несложных инженерных расчетов.

Сергей ПРОНКЕВИЧ,
ps_kv@tut.by

Версия для печатиВерсия для печати

Номер: 

36 за 2009 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя юзер
Попробовал, в программе даже есть символьные вычисления, трансформация Лапласа, некоторые другие полезные мелочи. Очень слабенькая графика, но в целом - очень неплохая вещь, спасибо за статью.
Аватар пользователя mike
Хорошая статья, автору спасибо; сам собирался как-нибудь на досуге написать; у меня стоИт wxMaxima, вызывается из системного меню в отличие от голой maxima. Добавлю, что "максиме" не помешают пакеты maxima-test и maxima-doc. О том, как устанавливать в Убунту можно почитать в https://help.ubuntu.com/community/Maxima
Аватар пользователя Инкогнито
на скриншотах она больше на Maple похожа