Задать функцию пользователя в скм maxima. Методичка работы с maxima. Возведение в степень и старшинство операций

  • 05.11.2019

Все команды вводятся в поле ВВОД, разделителем команд является символ; (точка с запятой). После ввода команды необходимо нажать клавишу Enter 2В wxMaxima нужно нажать Shift+Enter . для её обработки и вывода результата. В ранних версиях Maxima и некоторых её оболочках (например, xMaxima ) наличие точки с запятой после каждой команды строго обязательно. Завершение ввода символом $ (вместо точки с запятой) позволяет вычислить результат введённой команды, но не выводить его на экран. В случае, когда выражение надо отобразить, а не вычислить, перед ним необходимо поставить знак " (одинарная кавычка). Но этот метод не работает, когда выражение имеет явное значение, например, выражение заменяется на значение равное нулю.

Две одинарных кавычки последовательно, применённые к выражению во входной строке, приводят к замещению входной строки результатом вычисления вводимого выражения.

Пример:

(%i3) sqrt(aa)+bb;

(%i4) "(sqrt(aa)+bb);

2.5.1 Обозначение команд и результатов вычислений

После ввода, каждой команде присваивается порядковый номер. В рассмотренном примере, введённые команды имеют номера 1–5 и обозначаются соответственно (%i1), (%i2) и т.д.

Результат вычисления также имеет порядковый номер, например и т.д., где i - сокращение от англ. input (ввод), а о - англ. output (вывод). Этот механизм позволяет избежать в последующих вычислениях повторения полной записи уже выполненных команд, например (%i1)+(%i2) будет означать добавление к выражению первой команды - выражения второй и последующего вычисления результата. Также можно использовать и номера результатов вычислений, например . Для последней выполненной команды в Maxima есть специальное обозначение - .

Пример:

Вычислить значение производной функции :

(%i1) diff(x^2*exp(-x),x);

(%i2) f(x):=""%;

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

Другой пример (с очевидным содержанием):

2.6 Числа, операторы и константы

2.6.1 Ввод числовой информации

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

(%i2) 3/7+5/3, float;

(%i3) 3/7+5/3, numer;

(%i4) float(5/7);

2.6.2 Арифметические операции

Обозначение арифметических операций в Maxima ничем не отличается от классического представления: + , - , * , /. Возведение в степень можно обозначать несколькими способами: ^, ^^, **. Извлечение корня степени n записываем, как степень . Операция нахождение факториала обозначается восклицательным знаком, например 5!. Для увеличения приоритета операции, как и в математике, используются круглые скобки: (). Список основных арифметических и логических операторов приведён в табл. 2.1 и табл. 2.2 ниже.

Таблица 2.2. Логические операторы
< оператор сравнения меньше
> оператор сравнения больше
<= оператор сравнения меньше или равно
>= оператор сравнения больше или равно
# оператор сравнения не равно
= оператор сравнения равно
and логический оператор и
or логический оператор или
not логический оператор не

Cвободная математика

Александр Бикмеев разбирается, насколько свободна компьютерная математика и насколько свободное ПО является математическим.

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

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

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

Символьные вычисления

Системы компьютерной математики (СКМ) разрабатываются давно, и Maxima () была одной из первых. Изначально это был коммерческий продукт, но, не выдержав конкуренции, система перешла в разряд свободных.

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

Основное преимущество Maxima перед другими свободными системами – это поддержка символьных вычислений. То есть, введя аналитическое выражение или уравнение, вы можете получить результат также в аналитическом виде.

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

Для СКМ Maxima разработано несколько оболочек, наиболее удобной из которых (для начинающего пользователя) является wxMaxima (см. рис. 1). Начиная с версии 0.8.0, она стремительно меняется в лучшую сторону. Последняя версия (0.8.3) содержит черты таких известных коммерческих пакетов, как Maple и MathCAD . Работа в данной оболочке достаточно проста и позволяет получать приемлемые результаты уже через несколько минут использования. Многие операции, названия которых присутствуют в меню и на панелях инструментов, снабжены удобными мастерами, позволяющими решать задачи, даже не зная встроенного языка и команд Maxima . Ну и еще один немаловажный факт – все оболочки для данной СКМ русифицированы. Кроме того, изучив свободный пакет Maxima , обучающиеся смогут легче освоиться в коммерческих пакетах, что обусловлено как относительной схожестью интерфейса, так и используемым синтаксисом (особенно это касается Maxima и Maple ).

Система прекрасно документирована, но справочный материал представлен только на английском языке. Наш журнал публиковал учебные материалы о работе в СКМ Maxima (LXF81–86). Будучи консольным приложением, Maxima может работать в пакетном режиме, то есть ей можно передавать на обработку текстовый файл со списком команд и получать опять же текстовый файл с результатами, а если учесть, что вывод может быть оформлен средствами системы разметки TeX , то это позволяет использовать ее в качестве базы для построения собственных приложений. Одним из примеров такой разработки является расширение TeXmacs .

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

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

СКМ Maxima входит во многие дистрибутивы Linux или, по крайней мере, обязательно присутствует в репозиториях. Она включена в состав таких образовательных продуктов, как AltLinux Школьный, Edubuntu и EduMandriva.

Окно SMath Studio , в котором определена функция, вычислена ее производная и построен график.

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

В нашей стране родился спасительный проект: SMath Studio (http://ru.smath.info/forum/). Это бесплатный, но, к сожалению, пока не свободный продукт, разработчик которого, Андрей Ивашов, пытается создать альтернативу монстру MathCAD , и у него это получается (см. рис. 2). Приложение разработано для среды .NET , а затем адаптировано для Mono .

SMath Studio позволяет выполнять аналитические вычисления, операции с матрицами, строить графики и вычислять производные, и даже поддерживает функции программирования. К сожалению, аналитическое интегрирование пока не поддерживается, но продукт успешно развивается, и осенью 2009 г. автор заканчивает разработку инфраструктуры, которая позволит использовать сторонние подключаемые модули. Возможно, тогда развитие приложения выйдет на новый уровень, и мы получим полноценную альтернативу MathCAD .

Следует также отметить, что весной 2009 года, по соглашению с автором, продукт был включен в состав образовательного дистрибутива EduMandriva. Несмотря на ограниченную функциональность, данное приложение позволяет выполнять повседневные вычисления на уровне школьников и студентов младших курсов, а также простые инженерные расчеты. А если учесть, что SMath Studio прекрасно чувствует себя на карманных компьютерах и смартфонах, управляемых Windows Mobile, то знакомство с ним для школьников и студентов просто обязательно.

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

Окно wxMaxima с результатами символьных вычислений и графиком функции

В завершение данного раздела хочется заострить внимание на том, что пакеты символьной математики в качестве результата выдают выражение, а не число. Рассмотрим пример, показанный на рис. 3, в котором определена пользовательская функция и для нее найдена вторая производная; затем функция проинтегрирована. Заодно построен график. Таким образом, школьники и студенты могут наглядно выполнить полный анализ функции. И это далеко не все: Maxima умеет упрощать выражения путем раскрытия скобок, приведения подобных слагаемых, выполнения подстановок и задания некоторых условий и допущений, накладываемых на выражение. Добавьте сюда возможность символьного решения уравнений и систем уравнений, а также дифференциальных уравнений, и поймете, что современному студенту без этих инструментов не обойтись, а преподаватели естественных дисциплин могут оживить уроки и практические занятия за счет ввода интерактивных заданий или демонстрационного материала.

Численные расчеты

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

Matlab широко распространен по всему миру (см. Сравнение в LXF109), но стоимость даже образовательных лицензий не по карману не только школам, но и многим российским вузам. За рубежом также предпочитают считать деньги – и вкладывают человеческие ресурсы в разработку свободных аналогов Matlab . Рассмотрим некоторые из них.

Прежде всего, на мой взгляд, стоит остановится на проекте GNU Oсtave (http://www.gnu.org/software/octave/). Разработчики позиционируют эту систему как «высокоуровневый язык программирования для численных расчетов». Как и многие свободные *nix-проекты с давней традицией, она предоставляет интерфейс командной строки. Введите в терминале octave – и (если, конечно GNU Octave установлена на компьютере) перед вами появится приглашение данной системы. Начните вводить команды, и в терминале будут выводится результаты вычислений.

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

. Оболочка qtOctave с выполненными вычислениями.

Долгое время GNU Octave не имела графического интерфейса, пока, наконец, не появился qtOctave (см. рис. 4). Эта оболочка весьма напоминает интерфейс Matlab и позволяет автоматизировать выполнение некоторых рутинных операций (например, построения графиков) при помощи мастеров.

Язык системы сделан максимально схожим с языком Matlab ; следовательно, человек, освоивший GNU Octave , сможет практически без переобучения работать и в Matlab , а именно это и необходимо работодателям. Кроме того, энтузиастами движения свободного ПО для системы создано достаточное количество пакетов расширений. За счет этого функционал самой СКА постоянно растет. Ну, а наличие исчерпывающей документации (пусть и на английском языке) как для системы, так и для пакетов расширений делает данный продукт не только выгодным, но и доступным для изучения.

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

Следующий пакет, который хотелось бы рассмотреть, называется Scilab (http://www.scilab.org), само имя которого указывает на схожесть с Matlab . Изначально это был также коммерческий продукт, и назывался он Blaise , а затем Basile . Его создателей вдохновили первые версии Matlab , и некоторое время они конкурировали. Однако в начале 90‑х фирма Simulog прекратила его продажу, и тогда шесть разработчиков французского национального исследовательского института (INRIA) основали проект Scilab .

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

Интерфейс Scilab 5

Scilab – единственная свободная система, аналогичная Matlab , имеющая свой собственный инструмент для блочного моделирования под названием Scicos . В дистрибутиве продукта имеется встроенный редактор скриптов и функций с возможностью отладки. Scilab обладает развитыми графическими возможностями для создания высокотехнологичных приложений. С функциональностью системы можно ознакомиться, рассмотрев демонстрационные примеры – некоторые из них весьма впечатляют (выберите пункты меню ? > Демонстрация возможностей ).

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

Во всем мире вышло несколько книг, посвященных описанию работы в Scilab , а также решению ряда специализированных задач. К сожалению, ни одна из них не была переведена на русский язык. В России вышло всего две книги, одна – в рамках национального проекта, а во второй Scilab описывается наряду с несвободными пакетами. Наш журнал также неоднократно печатал учебники о работе в Scilab (LXF106–109 и ), и все же документации пока не хватает, а справочные материалы не всегда позволяют понять, как работает та или иная функция.

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

Выход пятой версии Scilab ознаменовал собой начало нового этапа в развитии системы. Изменился интерфейс приложения (разработчики отказались от GTK -интерфейса), начал меняться инструмент блочного моделирования Scicos , который в октябре 2009 года должен поменять свое имя на Xcos .

Еще одной вариацией на тему Matlab является Freemat (); этот пакет имеет другую немаловажную общую черту с Matlab , а именно поддержку объектно-ориентированного программирования. Интерфейс программы достаточно приятен. В основном окне реализовано автодополнение команд. На официальном сайте присутствует полное руководство по работе с системой (на английском языке). Дистрибутив программы имеет небольшой, по нынешним меркам, объем – 18 МБ.

Система позволяет выполнять численное решение уравнений и систем уравнений, как линейных, так и нелинейных, и числовую обработку сигналов (см. рис. 6); способна работать с многомерными матрицами. Основными положительными моментами Freemat , по сравнению со Scilab и Octave , являются большая совместимость внутреннего языка системы с языком Matlab и использование OpenGL для построения графиков и поверхностей, в результате чего они выглядят более качественно.

Минусами же Freemat являются низкое быстродействие (некоторые задачи решаются в разы медленнее, чем в других пакетах) и отсутствие пакетов расширений. Данная система развивается только усилиями команды из трех человек. Большого сообщества у проекта не наблюдается.

Дистанционная математика

Упомянутые выше системы представляют собой локальные проекты, то есть работа с ними ведется на одной машине. Но это бывает неудобно – например, при дистанционном обучении; кроме того, не все студенты согласятся (а иногда и смогут) поставить данные приложения на своих домашних компьютерах. В этом случае необходимы средства для удаленной работы с математическими пакетами.

SMath Studio Live : считайте, не выходя из браузера (пусть и не очень быстро).

Среди рассмотренного нами такую возможность предоставляет SMath Studio . В разделе Live официального сайта (http://smath.info/live) располагается виртуальный рабочий лист, на котором любой желающий может выполнить свои вычисления. Система очень удобна, хотя и не блещет быстродействием.

И все же более профессиональна в этом плане система SAGE (http://www.sagemath.org/). Данная система состоит из web-сервера, обеспечивающего графический интерфейс для взаимодействия с кодом Python , на котором написано ее ядро. Любой пользователь при помощи своего любимого web-браузера может подключиться к серверу, зарегистрироваться и получить в свое владение личное пространство. Оно может быть и открытым, и закрытым, то есть доступным только администратору сервера и самому владельцу. В личном пространстве могут создаваться рабочие листы, на них и выполняются все вычисления.

В рамках рабочего листа можно использовать любой доступный язык, а таких немало. По умолчанию система SAGE объединяет следующие продукты: GAP, Maxima, Python, R, LaTeX . Кроме этого, могут быть подключены Octave, Axiom, Magma, Mathematica, Matlab, Maple, Mupad и другие. В результате мы получаем единый сервер удаленной работы, позволяющий обучать любым математическим пакетам и выполнять вычисления с помощью как свободных, так и коммерческих систем компьютерной математики.

. По непонятным причинам, Sage отказывается работать в Firefox , но в остальном это удачное решение для удаленной работы.

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

В настоящее время в сети существует несколько публичных SAGE -серверов – к ним можно подключиться, посмотреть листы, выложенные в общий доступ, завести свое личное пространство и, в случае трудностей, попросить помощь у сообщества. Для этого просто сделайте рабочий лист публичным. Уверяю вас: желающих помочь достаточно много, единственная проблема в том, что рабочий язык – английский.

На официальном сайте присутствуют ссылки на тестовый публичный сервер (http://www.sagenb.org), а также на учебные материалы и книги, созданные с помощью данной системы. Зарегистрируйтесь и опробуйте SAGE – может быть, это то, что вы ищете? Стоит также отметить, что у нас не получилось войти на сервер в Firefox , но в других браузерах проблем не возникло.

Итак, мы рассмотрели наиболее популярные свободные системы компьютерной математики. Можно ли их использовать в обучении и для работы – решать вам. Мы свой выбор уже сделали, и не жалеем об этом.

Коммерческие системы

Среди коммерческих систем наиболее популярны три: Matlab (численные вычисления), Maple (основной упор сделан на символьные вычисления) и Mathematica (удачно сочетает устремления первых двух). Особняком стоит мощный инженерный пакет MathCAD , поскольку это скорее большой инженерный калькулятор, и он не предназначен для решения сложных задач математической физики или теории шифрования, обработки сигналов и так далее.

Все эти пакеты имеют версии под наиболее распространенные платформы: Windows, Linux и Mac OS X. Приведем стоимость одной лицензии данных пакетов для академических учреждений, согласно прайс-листу Softline:

  • Matlab – 30 765 руб;
  • Mathematica – 9002 руб;
  • Maple – 36 286 руб;
  • MathCAD – 5290 руб.

Выводы вы можете сделать сами.

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

Используемый стиль обозначений позволяет при дальнейшей записи команд сослаться на ранее полученные результаты, например, таким образом (% o 1)*(% o 2) – результаты требуется перемножить.

Для последнего ответа в Maxima есть специальное обозначение%. А для последней команды _ (знак подчёркивания).

Пример : Вычислить значение функции в точках x = a , и вычислить .

Команда (%i1) была выполнена (появился результат %о1) и была определена функция . Поэтому следующие две команды (%i2) и (%i3) вызывали (хотя и по-разному) эту функцию, чтобы рассчитать значения в заданных точках. Из (%i4) видно, что ссылку на строку результата (%о2) можно писать и без скобок ().

Основные математические операции в Maxima обозначаются обычным образом: +, –, *, /. Возведение в степень для удобства предусмотрено записывать тремя разными способами ^, ^^, **. Знак присвоения – это двоеточие «: », команду для Maxima «а:2;» следует читать следующим образом: «переменной а присвоить число 2». В конце команды кроме точки с запятой «; » допустимо ставить знак доллара $. При наличии точки с запятой результат выводится на экран, при наличии доллара результат не выводится на экран, исключение составляют команды для вывода графиков, заканчивающиеся долларом, но выводящие на экран график.

3.1. Переменные в Максима

Переменные в Maxima могут хранить символы, аналитические выражения, определения функций, логические значения «true», «false», списки, уравнения, строки текста, заключенного в двойные кавычки, в составе которого имеются кириллические символы, и, конечно же, числа: целые, рациональные дроби, вещественные фиксированной точности и вещественные с плавающей точкой неограниченной точности типа %pi.

Из следующего примера видно, что Maxima вполне законченный математик, для неё переменная х и нечто – никому непонятный объект ″Петя″ – ничем не отличаются. Maxima

В этом примере Maxima разделила (″Петя″2–4)/(″Петя″–2) и получила ″Петя″+2. Затем из ″Петя″+2 Maxima отняла ″Петя″ и в итоге получила целое число 2.

3.2. Возможные ошибки вычислений

Из следующего примера следует, что в операциях с числами Maxima «ручается» только за 16 значащих цифр и «ничто компьютерное ей не чуждо», у неё тоже имеются чисто вычислительные проблемы (см. %о3) с округлением при вычислениях.

Дело в том, что в приведённых примерах Maxima производит вычисления не целыми числами, а с приближенными. Расчеты производятся не в десятичной системе и не путем формальной замены деления введением множителя 10 –5 . Деление производится реально в двоичной системе. Приближенные числа имеют стандартную длину, плавающую запятую. Результаты округляются так, чтобы оставались 16 значащих цифр.

В данном примере появившаяся неожиданная ″ добавка ″ незначительна и составляет всего 0,3*10 –21 .

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

За счет реального выполнения арифметических вычислений, результаты оказываются неточными: ответы %о3 и %о4 отличаются от нуля.

3.3. Записьуравнений

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

3.4. Неопределённая форма выражений

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

откуда видим, что первый пример в окне XMaxima посвящен вычислению представленного здесь интеграла.

Однако, указанный метод не сработает, если выражение имеет явное значение, например, выражение sin(π ) Maxima рассматривает как нуль и при наличии апострофа. Соответственно co s(2 π ) для Maxima в точности равен единице.

С другой стороны, чтобы принудительно заставить выражение вычислить, то есть перевести его в действующую форму, следует поставить одиночную кавычку два раза (применить оператор действующей формы – ′′ ).

3.5. Вызов справки

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

Для вызова справки следует написать? topic и вызвать интерпретатор нажатием Shift +Enter , где topic – эта ключевое слов (тема) справки.

Команда?? topic вызывает поиск по всем темам справки, содержащим ключевое слово topic .

В следующем примере мы хотели спросить про знак факториала, но не поставили пробел после знака вопроса (ошиблись). Maxima ответила, что не существует точно такой, как в запросе, (exact match ) темы.

И посоветовала попытаться (Try ) вторично (??) спросить с целью получения не вполне точного ответа. О том, что ответ был неудовлетворителен, Maxima сообщила в виде false в строке ответа (%о1).

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

В случае с факториалом (!) при вторичном запросе Maxima дала исчерпывающий ответ (который мы немного сократили)

В ответе Maxima сначала создала нумерованный список ответов (в данном случае у неё два номера 0 и 1), затем предложила ввести разделённые пробелом (space - separated ) номера разделов или указать все (all ) или никакие (none ) из них. После уточнения (а ), которое она поняла как (all ), Maxima напечатала справку по запрашиваемое теме "факториал".

3.6. Ввод числовой информации

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

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

Здесь Maxima прежде всего действовала по умолчанию. Она сложила дроби 3/7 и 5/3 по правилам арифметики точно: нашла и привела дроби к общему знаменателю и сложила числители. В итоге она получила 44/21. Лишь после того, как мы попросили её получить численный ответ, она вывела приближенный, с точностью 16 знаков, численный ответ 2,095238095238095.

3.7. Возведение в степень и старшинство операций

Как уже отмечалось выше, обозначения арифметических операций в Maxima не отличаются от классического представления, используются те же математические знаки: + – * /. Но возведение в степень предусмотрено обозначать тремя способами: ^ , ^^ , **.

Извлечение квадратного корня производит функция sqrt(),извлечение корня степени n записывают как степень ^^(1/n ).

В Maxima определены стандартные операции – нахождение факториала числа, (например, 6! = 1 · 2 · 3 · 4 · 5 · 6 = 120) и нахождение двойного факториала (например, 6!! =2 · 4 · 6 = 48; 7! = 1 · 3 · 5 ·7 = 105).

Для увеличения приоритета операции при записи команд для Maxima используют круглые () скобки.

Как видно из приведённых результатов вычислений (%о13)–(%iо5), Maxima правильно понимает старшинство операций: сначалавыполнила возведение в степень и только потом операцию деления. Выполняя команду (%i13), она возвела в степень 1 и разделила результат на 3, но при выполнении команды (%i14) вычислила корень третьей степени, результат (%о15) равен произведению (%о13) и (%о14).

3.8. Константы

В Maxima для удобства вычислений есть ряд встроенных констант, самые распространенные из них показаны в следующей таблице (табл. 1):

Таблица 1

Названия констант и их обозначение в Maxima

Название

Обозначение

π (число Пифагора)

e (Эйлерово число)

Мнимая единица ()

+∞ (плюс бесконечность)

– ∞ (минус бесконечность)

minf

Истина

true

Ложь

false

Комплексная бесконечность

infinity

слева (в отношении пределов)

minus

справа (в отношении пределов)

plus

Золотое сечение ()

%phi

3.9. Переменные и выражения

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

Присваивание значения переменной осуществляется с использованием символа : (двоеточие), например x: 5.

Если необходимо удалить значение переменной (очистить ее), то применяется метод kill : kill (x ) – удаляет значение переменной x, а команда kill(all) – удаляет значения всех используемых ранее переменных. И, кроме того, метод kill начинает новую нумерацию для исполняемых команд (обратите внимание, что ответом на команду (%i3), приведенную ниже, оказался ответ с номером ноль (%o0) done , и далее нумерация команд снова началась с единицы).

Напомним также, что в одной строке (см. % i 1), можно записать несколько команд, разделяя последние символом ; (точка с запятой) или знаком $ (доллар), если нам не требуется вывод результата на монитор.

Математические операции в Maxima используются для записи выражений. Всё в Maxima является выражениями, в том числе математические выражения как таковые, а также объекты и программные блоки. Простейшее выражение представляет собой атом, либо оператор с аргументами.

Атом - символ (имя), строка в двойных кавычках, либо число (целое или с плавающей точкой). Все выражения не-атомы представляются в виде oper (a1 ,.., aN ), где oper - имя оператора, a1,..., aN - его аргументы. Выражения могут отображаться по-разному, но внутреннее представление всегда одинаково. Аргументы выражения могут быть атомами, либо выражениями не-атомами.

Команда op возвращает оператор, args возвращает аргументы, atom определяет, является ли выражение атомом.

Например :

Функция symbolp возвращает «true», если её аргумент является символом.

Функция двух аргументов freeof(,) возвращает «true», если второй её аргумент свободен (не содержит) первого аргумента.

Функция zeroequiv(,) проверяет, является ли её аргумент –функция одного аргумента – нулём. Zeroequiv возвращает «true», если её аргумент равен нулю и «false» в противном случае.

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

3.10. Математические функции

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

Таблица 2

Встроенные математические функции Maxima

Функции

Обозначение

Тригонометрические

sin (синус),

cos (косинус),

tan (тангенс),

cot (котангенс)

Обратные

тригонометрические

asin (арксинус),

acos (арккосинус),

atan (арктангенс),

acot (арккотангенс)

Секонс, косеконс

sec (x) = 1/cos (x), (секонс ),

csc (x) = 1/sin (x), (косеконс )

Натуральный логарифм

log()

квадратный корень

sqrt()

модуль

abs()

остаток от деления

mod(,)

Минимальный из списка

min(x1, ... ,xN)

Максимальный из списка

max(x1, ... ,xN)

Знак аргумента

Pos (x>0),

Zero (x=0),

sign(x); = neg (x<0),

Pnz – (не определен)

Случайное число

random (N ) – целое, из промежутка

если N –целое

random (float (P )) – число с плавающей точкой

Следует иметь в виду, что некоторые названия функций отличаются от названий, используемых в отечественной литературе. В Maxima используется вместо tg – tan, вместо ctg – cot, вместо arcsin – asin, вместо arccos – acos, вместо arctg – atan, вместо arcctg – acot, вместо ln – log, вместо cosec – csc.

Примеры использования функций:

3.11. Правило записи функций

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

3.12. Пользовательские функции

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

Нужно помнить, что не следует использовать для функций названия, зарезервированные для встроенных функций Maxima (записанные выше в табл. 2).

3.13. Перевод сложных выражений в линейную форму записи

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

Для облегчения данного процесса нелишне дать несколько рекомендаций:

1. Не забывайте ставить знак умножения! В графическом окне Maxima по правилам математики удвоенное значение переменной х записывает в виде 2x , но при записи команда для Maxima должна выглядеть как 2*x.

2. Но между именем функции и скобкой с аргументом знак умножения не пишется; sin *(x ) – здесь знак умножения лишний.

3. В случае сомнения всегда лучше перестараться и поставить «лишние», дополнительные скобки (). Числитель и знаменатель выражения всегда необходимо заключать в скобки. При записи возведения в степень основание и степень лучше всегда брать в скобки.

4. Функция не существует отдельно от своих аргументов (если таковые имеются). Поэтому, например, при возведении в степень функции некоторого аргумента следует взять всю функцию с аргументами в скобки, а потом уже возводить полученную конструкцию в нужную степень: (sin (x ))**2. Очень часто начинающие пользователи пытаются возвести в степень только название функции, забывая про аргументы: sin **2(x ) – это неправильно!

5. Также необходимо помнить, что несколько аргументов функции записываются в скобках, через запятую,например min (x 1, x 2, x 3, xN ).

6. Недопустима запись функции sin (2* x ) в виде sin *2* x или sin 2 x . Запомните, как действует Maxima при записи скобок: как только вы пытаетесь написать открывающую скобку, она тут же пишет вторую – парную ей – закрывающую скобку. Поэтому при записи функций напишите название функции, затем поставьте после нее пустые скобки и только потом в этих скобках напишите все ее аргументы, разделяя их запятыми. Никаких конструкций между названием функции и открывающейся скобкой быть не должно!

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

Примеры простых команд для Maxima :

Математическая запись

Команда для Maxima

(x+2)/(y–7)

(x+3)**(2*y)

sin((x–2)/(a+3))

((x–2)/(a+3)+2)/(4–(y–7)/(b+4))+12*x

Упражнение: Н еобходимо ввести следующее выражение:

Указания к выполнению: Разделим это выражение на три составные части: будем отдельной частью считать числитель, выражение, стоящее в знаменателе в скобках, и степень. Введем каждую названную составную часть, и объединим их в выражение.

При вводе команд строку с ошибочной записью команды для Maxima можно выделить и удалить с графического экрана (с клавиатуры), а вместо неё написать и выполнить (с клавиатуры нажатием Shift + Enter ) правильную команду, следует ожидать, что номер ответа при этом изменится.

Если щёлкнуть мышкой в незакрашенный треугольник, то треугольник закрасится, а строка с результатом будет скрыта, при этом появится запись (1 lines hidden). Чтобы удалить с экрана и ответ, и команду (блок, отмеченный слева квадратной скобкой), следует щелчком мыши выделить квадратную скобку у пары ввод–ответ, вызвать щелчком правой кнопки мыши контекстное меню и выбрать опцию Delete Selection. Так в предыдущих примерах строки с командой (%i4) и с ответом (%o4) нет – они удалены.

Заметим также, что при записи команды для Maxima (%o1)/(%o2)**(%o3) в строке (%i5) вполне допустимо перестраховаться и написать иначе, используя дополнительные скобки для знаменателя: (%o1)/((%o2)**(%o3)). Но Maxima правильно нас поняла и без этих «лишних скобок» и вычислила вводимое выражение математически правильно, поскольку понимает принятое в математике старшинство операций : прежде всего вычисляются аргументы (так как находятся в скобках) и функции, потом выполняется возведение в степень, затем операции деление и умножение и только потом – сложение и вычитание.

by 0):
а) y :2/ x ; x :0; б) u :0; v :2/ u ; в) z :0; t :2/ Z ; и почему?

3. Что является оператором в выражениях а) x^y; б) – t; в) x + y;?

4. Что ответитMaxima, если исполнить команду: u – v; op(%);?

5. Чему равнывыражения: а) 4 * – 2; б) 4 * + 2; в) 4 ** – 2;?

6. Что является аргументами в выражении fas (p , q ) := p – q ?

7. Является ли атомом выражение abc?

8. Почему в следующих примерахMaxima сумела численно рассчитать tg(π /2) и, но отказалась делать численные вычисления для ctg(0)?

9. Какой ответ даст Maxima, если команда для неё будет такой:

10. Что больше e π или π e ?

11. На сколько процентов большее из сравниваемых чисел превышает меньшее?

12. Что ответит Maxima, если команда для неё будет такой:

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

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

Функция в Maxima

Функция в математике

Гиперболический синус.

Гиперболический косинус.

Гиперболический тангенс.

Натуральный логарифм.

Арктангенс

Арксинус

acos(x) Арккосинус

Примечание: А вы знали, что если взять арксинус/арккосинус от числа больше 1, то у вас получится комплексное значение?

Наверняка встроенных функций куда больше. Если вам еще что-то нужно, то попробуйте обратиться к руководству по wxMaxima/Maxima. Там много интересного для начинающего любителя численных вычислений.

Рисунок 8: Встроенные функции в Maxima.

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

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

После определения вы можете использовать ее также, как и встроенные функции: f(3)

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

Рисунок 9: Собственные функции в wxMaxima

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

Циклическая обработка данных.

Это пожалуй самая сложная часть руководства, потому что она использует малопонятные непрограммистам циклы. Но если вы будете аккуратно вводить команды и не ошибаться, то все будет пучком.

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

for I in A do ldisp(I/sqrt(2))

По порядку. Здесь for - это ключевое слово, обозначающее цикл. I это временная переменная, которая соответствует одному из элементов списка. A это массив, который уже был введен вами ранее. Ключевое слово do говорит максиме что надо делать, проходя массив. Проход массива осуществляется поочередно, то есть действие после do выполняется столько раз, сколько находится элементов в массиве, а переменная I принимает на каждой итерации(итерация - одно выполнение цикла) значения a,a,...,a[n]. Дальше идет хитрая функция ldisp, которая позволяет нам увидеть, что она там такого насчитала. А параметром этой функции служит выражение. Если вы ничего не поняли, то не вдавайтесь в эти описания. А просто попробуйте сами дать эту команду, и поизменять ее параметры.

Примечание: Имена переменных и других объектов в максима регистрозависимы. Это значит, что I и i это две разные переменные.

Рисунок 10: Команда циклической обработки.

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

Теперь можно заполнять:

for i in a do b:append(b, )

Этот цикл похож на предыдущий, но в него потребовалось внести некоторые

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

Вы увидите ваш список.

Рисунок 11: Расчет с сохранением результатов.

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

1. Ввести список исходных экспериментальных значений.

2. Задать функции для расчета значений.

3. Дать команды на циклический обсчет списков.

4. Занести данные в ваш лабник.

5. Закрыть лабник, и идти пить пиво на парапет, или куда-нибудь еще.

А теперь я расскажу о некоторых дополнительных фишках, которые могут вам помочь при подготовке к сдаче работы.

Система компьютерной математики Maxima — настоящий ветеран среди программ этого
класса. Она старше многих своих известных коммерческих собратьев по крайней мере
на два десятка лет. Первоначально носившая имя Macsyma, она была создана в конце
1960-х годов в знаменитом Массачусетском технологическом институте и почти 20
лет (с 1982 по 2001) поддерживалась Биллом Шелтером (William Schelter), благодаря
которому и приобрела свои замечательные качества и известность в научном мире.
Подробности по истории системы, инсталляционный модуль (размером всего в 10 MB),
документацию, исходный код и другую сопутствующую информацию можно найти на Web-узле
пакета .
Текущая версия (5.9.0) работает под управлением Windows и Linux.

Несмотря на скромные размеры, Maxima — высокоинтеллектуальный продукт, способный решать сложные аналитические задачи. Как и большинство систем компьютерной математики, она является командным интерпретатором, взаимодействующим с пользователем по принципу "вопрос — ответ". Поэтому рабочая область системы представляет собой последовательность ячеек ввода/вывода (рис. 1), маркированных меткой (С — для ввода пользователя, D — для результата) и номером. Такой способ обозначения обеспечивает удобный механизм ссылок, позволяющий для обращения к одному из предыдущих результатов ввести только имя нужной ячейки.

Численные операции


Рис. 1

С какими бы выражениями ни работала Maxima,
она всегда стремится к представлению результатов в точной аналитической форме.
Это в полной мере относится и к численным расчетам. Например, если ввести в командной
строке выражение 1/2+1/3 , то результатом будет 5/6 . Для того чтобы
получить значение в виде числа с плавающей точкой, необходимо указать это явно.
Простейший способ состоит в задании специального дескриптора numer через
запятую после введенного выражения.

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

Отметим, что Maxima взвешенно подходит к регистру вводимых выражений. Если их вид близок к имени встроенной функции, программа использует эту функцию. Согласно данному правилу Sin , sin и SIN обозначают одно и то же. Вместе с тем пользовательские переменные и функции чувствительны к регистру — X и x могут обозначать разные объекты.

Система также поддерживает комплексную арифметику и ряд известных математических констант.


Аналитические операции


Рис. 2

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

В случае если для введенного выражения нельзя получить однозначный результат, программа практически на естественном (английском) языке задаст наводящие вопросы. К примеру, при попытке найти интеграл от функции x n Maxima уточнит, не равно ли n+1 нулю (как известно, от этого существенно зависит результат). Впрочем, таких вопросов можно избежать, если заранее с помощью специальных операторов указать область изменения используемых параметров и переменных.

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


Операции линейной алгебры

В Maxima реализован весьма совершенный механизм векторно-матричных операций,
позволяющий проводить сложные алгебраические вычисления. Матрицы вводятся универсальным
оператором matrix , затем к ним применимы обычные линейные операции — сложение,
вычитание, умножение на скаляр (для их записи используют естественную математическую
нотацию вроде A+B ), а также транспонирование, обращение, вычисление определителей,
спектральных характеристик и пр.


Графические возможности


Рис. 3

Современная система компьютерной математики
универсального типа обязана обладать развитыми возможностями визуализации данных.
Имеются они и в Maxima. Графики в системе строятся с помощью двух функций — PLOT2D
(двумерные, рис. 2) и PLOT3D (трехмерные, рис. 3). Несмотря на этот относительно
небогатый выбор, названные инструменты позволяют выводить графики разных типов
на плоскости и в пространстве с достаточно тонкими настройками — посредством
специальных операторов или аргументов функций задаются количество узлов сетки,
на которой строится требуемый график, диапазоны данных, цветовые и другие характеристики.
Кроме того, можно воспользоваться интерактивными настройками для быстрого изменения
толщины линий, поворота трехмерной поверхности и т. д. Выбор форматов экспорта
Maxima весьма узок: рисунки в программе сохраняются, по сути, только в PostScript.
В целом же визуальные инструменты системы относительно скромны, хотя и дают возможность
получить качественные графики некоторых типов.


Средства программирования

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

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

MyFunc(x,y):=x^2+y^2;

Затем MyFunc можно применять наряду со встроенными. Конечно же, система поддерживает и более сложные конструкции. В теле функции допускаются операторы ветвления, циклов, ввода/вывода и т. д. Язык программирования в Maxima имеет некоторые особенности, важнейшей из которых является то, что число аргументов функции не обязано быть фиксированным. Другая состоит в чрезвычайно гибких средствах для работы с массивами, которые редко встретишь не только в традиционных языках, но и специализированных системах, в том числе СКМ. Вот несколько примеров, заимствованных из одного руководства (двоеточие в Maxima означает присваивание):

a:4*u;
a:%PI;
a[x]:mystery;

Все операторы корректны и задают в совокупности массив, индексами которого служат числа 4 , 22/7 и строка "x" , а значениями элементов — выражение 4*u , число π (в Maxima оно записывается как %PI) и строка символов "mystery" . Таким образом, как элементом массива, так и его индексом может выступать практически любое выражение. Оригинальные свойства Maxima вовсе не ограничиваются этими особенностями (например, поддерживаются даже массивы функций), но мы не будем останавливаться на деталях.

Вообще, Maxima написана на языке Lisp и непосредственно поддерживает многие его команды. Можно сказать, что Lisp является ядром системы, и к нему допускается обращаться при "низкоуровневом" программировании. Впрочем, в большинстве случаев этого не требуется. Maxima предоставляет достаточное количество уже готовых средств, использовать которые значительно проще, чем Lisp-операторы.

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

Забота о пользователе

Кроме документации, доступной на Web-узле продукта, в комплект поставки входят введение в Maxima и учебник по системе (оба в формате HTML) — детальное описание, достаточное для углубленного ознакомления со всеми ее возможностями. Однако во время сеанса работы с системой нередко необходимо получить оперативную справку. Для этого Maxima предоставляет функцию DESCRIBE() , которая выводит подробные сведения об интересующем пользователя операторе (который передается ей в качестве аргумента). Не беда, если вы не помните его полный синтаксис, введите несколько первых букв названия — и Maxima выдаст все доступные имена, начинающиеся с данной комбинации символов. Если же этих сведений окажется недостаточно, то можно воспользоваться функцией EXAMPLE() , которая предложит характерные примеры. К функциям этого же ряда принадлежит DEMO() , выполняющая программы из демонстрационных файлов, поставляемых с системой. Хотелось бы отметить такую особенность системы, как возможность представления результатов вычислений в формате TeX с помощью функции, которая так и называется — TEX() .


Выводы

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