Вконтакте Facebook Twitter Лента RSS

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


Система компьютерной математики 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 могут обозначать разные объекты.

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


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

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

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

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


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

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


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

Современная система компьютерной математики универсального типа обязана обладать развитыми возможностями визуализации данных. Имеются они и в 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 вполне можно использовать и в учебных целях, и в качестве платформы для вполне серьезных научных разработок.

0

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 руб.

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

Maxima - еще одна программа для выполнения математических вычислений, символьных преобразований, а также построения разнообразных графиков. Сложные вычисления оформляются в виде отдельных процедур, которые затем могут быть использованы при решении других задач. Система Maxima распространяется под лицензией GPL и доступна как пользователям ОС Linux, так и пользователям MS Windows.

Для работы с данной системой в ОС Linux следует в окне shell набрать команду maxima или xmaxima для запуска ее графической оболочки. Другим удобным инструментом для работы с системой Maxima является программа texmacs . На панели инструментов этой программы располагается кнопка с изображением монитора, нажатиe на которую открывает меню выбора интерактивной сессии. Выбор пункта maxima позволит начать сеанс работы с этой программой.

При отображении результатов вычислений эта оболочка использует стандартные математические обозначения, в то время как xmaxima или maxima - только символы из таблицы ASCII-кодов.

При старте выводится некоторая информация о системе и "метка" (C1). Каждый ввод и вывод помечаются системой и затем могут быть использованы снова. Символ C (от command) используется для обозначения команд, введенных пользователем, а D (от display) - при выводе результатов вычислений.

Для инициализации процесса вычислений следует ввести команду, затем символ; (точка с запятой) и нажать клавишу Enter. Если не требуется вывод полученной информации на экран, то вместо точки с запятой используется символ $. Обратиться к результату последней команды можно с помощью символа %. Для повтора ранее введенной команды, скажем (C2), достаточно ввести два апострофа и затем метку требуемой команды, например, ""C2.

Система Maxima не обращает внимание на регистр введенных символов в именах встроенных констант и фунций. Запись sin(x) эквивалентна записи SIN(x), но при выводе результатов в текстовом режиме используются заглавные буквы. Регистр букв, однако, важен при использовании переменных, например, Maxima считает x и Xразными переменными.

Для стандартных математических констант используются следующие обозначения: %e (или %E) для основания натуральных логарифмов, %i (%I) для мнимой единицы (квадратный корень из числа -1) и %pi (%PI) для числа
.

Присваивание значения какой-либо переменной осуществляется с помощью знака : (двоеточие), а символ = (равно) используется при задании уравнений или подстановок.

(C1) x:2; (D1) 2 (C2) y:3; (D2) 3 (C3) x + y; (D3) 5

Функция kill аннулирует присвоенные ранее значения переменных. Параметр all этой функции приводит к удалению значения всех переменных, включая метки Ci и Di.

(C8) kill(x); (D8) DONE (C9) x + y; (D9) x + 3 (C10) kill(all); (D0) DONE (C1) x + y; (D1) y + x

Для завершения работы с системой применяется функция quit(); , а прерывание процесса вычислений осуществляется путем нажатия комбинации клавиш Ctrl+c (после чего следует ввести:q для возврата в обычный режим работы).

Справка о той или иной функции выводится по команде describe (имя функции). При работе в графической оболочке XMaxima, можно воспользоваться пунктом меню help. Процедура example (имя функции) демонстрирует примеры использования функции.

Все команды вводятся в поле ВВОД, разделителем команд является символ; (точка с запятой). После ввода команды необходимо нажать клавишу 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 логический оператор не
© 2024 Вопросы и ответы