Программа Maxima распространяется под лицензией GPL и доступна как пользователям ОС Linux, так и пользователям MS Windows. К сожалению, русская версия программы не имеет даже простой справки на русском языке, а немногочисленные статьи, посвященные изучению этой программы, имеющиеся в некотором количестве в Интернете, – не всегда доступны и, зачастую, рассчитаны на уже компьютеризированного пользователя.
Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Просмотр содержимого документа
«Программирование в Maxima»
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ
ПЕДАГОГИЧЕСКИЙ ИНСТИТУТ ИМЕНИ М. Е. ЕВСЕВЬЕВА»
Физико-математический факультет
Кафедра математики и методики обучения математике
РЕФЕРАТ
Программирование в Maxima
Афонина В.А
Программа Maxima распространяется под лицензией GPL и доступна как пользователям ОС Linux, так и пользователям MS Windows. К сожалению, русская версия программы не имеет даже простой справки на русском языке, а немногочисленные статьи, посвященные изучению этой программы, имеющиеся в некотором количестве в Интернете, – не всегда доступны и, зачастую, рассчитаны на уже компьютеризированного пользователя.
Предлагаемое пособие в первую очередь предназначено для первичного знакомства с системой компьютерной алгебры Maxima и может использоваться как при очном обучении, так и в системе дополнительного образования.
Большинство компьютерных программ, как уже отмечалось, предназначено для вычислений с числовыми выражениями. Как правило, их результаты бывают приближенными, ведь при операциях с вещественными числами происходит их округление. Системы компьютерной математики, избавлены от подобных недостатков. Они способны использовать в процессе вычислений математические теоремы и факты. Так, известное тригонометрическое тождество гласит, что sin2x+cos2x=1 для любого x. Ни один калькулятор не способен применить это тождество в процессе преобразований, в то время как такие программы, как Mathematica или Maxima, предназначенные для символьных вычислений, легко справляются с подобными задачами.
Там, где необходимо выполнить вычисления точно, либо осуществить аналитическое преобразование, например, упростить сложное математическое выражение, вычислить в символьном виде производную или первообразную заданной функции, разложить ее в ряд Тейлора, найти корни уравнения и т. д., применяются системы компьютерной алгебры (системы символьных вычислений). Отметим также особую роль подобных систем в техническом и математическом образовании. Они позволяют проверить результаты громоздких математических расчетов и наглядно представить сложные математические объекты.
В отличие от коммерческой программы Mathematica программа Maxima распространяется под лицензией GNU, что позволяет рекомендовать ее широкому кругу пользователей. У каждой из этих двух программ есть свои сильные и слабые стороны. Удобный графический интерфейс является несомненным достоинством программы Mathematica, в то время как Maxima зачастую дает математически более строгие ответы. Так, например, при вычислении первообразной функции xn Maxima просит уточнить значение n, так как при n= – 1 результатом является функция ln x, а при других n первообразная равна xn+1/(n+1). Программа Mathematica не уточняет n и для такой функции всегда в качестве первообразной выдает значение xn+1/(n+1), хотя если в качестве функции задать 1/x, то получим верный результат – ln x. Другими представителями систем такого рода являются программы Mathcad, Maple, Axiom, GAP, FreeMat, Octave, Scilab, YACAS и другие.
Язык Maxima содержит все необходимые средства для разработки программ: условные инструкции, циклы, массивы.
Вывод данных
Зачастую удобно, чтобы на экран выводился не весь результат работы программы, а только некоторые значения. Для этого необходимо:
1. Отключить вывод на экран результата вычисления выражения, для чего необходимо заменить завершающий символ ; на символ $.
2. Для вывода на экран значения переменной или какой-нибудь другого выражения используется функция print, например, print(i) для вывода значения переменной i.
Блоки команд
Для того, чтобы в теле условной инструкции или цикла выполнить несколько инструкций, необходимо их записать в круглых скобках через запятую, например, блок инструкций для обмена местами переменных a и b может выглядеть так: (t:a, a:b, b:t).
Условная инструкция if
Условная инструкция if имеет следующий синтаксис:
if условие then выражение1 else выражение2
При этом инструкция if возвращает значение одного из двух выражений. Например, присвоить переменной m максимума из двух переменных a и b можно двумя способами:
if ab then m:a else m:b
или
m: if ab then a else b
Вместо одной инструкции можно использовать блок инструкций, как указано выше. Слово else и инструкцию после него можно опустить.
Цикл for
Синтаксис цикла for следующий:
for переменная: начальное_значение step шаг thru конечное значение do выражение
Примеры:
for i:2 step 2 thru 100 do print(i)$
Любые части этой конструкции (step, thru) можно опускать.
При необходимости выполнить несколько инструкций необходимо объединить их в блок.
Цикл while
Синтаксис цикла while следующий:
while условие do выражение
В качестве условий можно использовать операторы сравнения , =, =, # и логические операторы and, or, not.
Загрузка и интерфейсы Maxima
Версия, существующая на начало лета 2008 года – 5.15.0, доступна для загрузки с русской версии сайта Maxima http://maxima.sourceforge.net/ru/. С каждой новой версией в Maxima появляются новые функциональные возможности и виды решаемых задач. Пакет Maxima либо входит в Linux- дистрибутив, и при отсутствии программы на компьютере, ее просто нужно доустановить из дистрибутива, либо пакет доступен для скачивания с упомянутого сайта проекта, либо Максиму можно собрать из исходников, лежащих на том же сайте.
Попробуем загрузить ту Максиму, что находится на нашем компьютере и приобрести минимальный начальный опыт, например, следующим образом. Найдем на рабочем столе или в меню задач Терминал (Konsole) и запустим эту программу, после получения приглашения введем maxima. Тем самым мы пытаемся загрузить Максиму из Консоли (её консольный вариант). Maxima тут же напишет нам номер своей версии и название сайта для своего последующего обновления. Добавим 2*2 после выражения в скобках, у нас получится (%i1) 2*2 (мы желаем узнать, знает ли об этом Максима?). Нажав Enter, мы замечаем, что курсор как всегда переместился на строчку ниже, но Максима не сказала нам ни "Да", ни "Нет". В отчаянии мы стучим пальцем по стрелке "Вверх", но курсор вверх не передвигается, однако снова сама собой появляется запись 2*2 (тут же замечаем для себя на будущее, что Maxima запомнила введенный нами текст) (рис. 1).
Рассуждая о том, что нам теперь делать, вспоминаем, что очень часто программисты используют знак ; (точку с запятой), чтобы один оператор отделить от другого. Добавим ; к нашему тексту, получим 2*2; и снова упорно надавим Enter. Maxima тут же отвечает, но сама возмущена – пишет (Incorrect syntax: ...) – и указывает нам на нашу некорректность в записи команды в две строчки (рис. 1).
Мы, конечно же, прежде всего, вынуждены "зарубить на носу", что точку с запятой надо ставить обязательно, если мы хотим получить ответ от Максимы. На наше новое немного измененное предложение (%i1) 2*12; (мы попробовали сдвинуть курсор влево и вставили 1 перед двойкой и исправления оказались доступны!). На это повторное предложение: "перемножь эти два числа"
Максима ответила (%o1) 24, но записала это по-своему: номер ответа (%o1) поставила на экране слева, а сам ответ 24 – на самой середине экрана (рис. 1).
Рис. 1. Начало работы в консольной версии Максимы
Ответ на наше более сложное задание: вычислить еπ, которое мы ввели в виде одной строки %e**(%pi), Максима также получила мгновенно, но ответ вывела в 2 строки (в верхней строке Максима записала показатель степени %pi, а ниже и немного левее — основание степенного выражения %e). Из записи ответа видно, что Максима понимает математику, но предпочитает записывать ответ не в виде числа (зачастую, как мы знаем, приближенного), а в символьном виде (точно), однако в консольном варианте других возможностей
– кроме как выводить результат в несколько строк – у Максимы нет. Когда мы повторили наше задание и добавили в новом задании слово numer, Максима вывела нам численный ответ в виде числа с большой точностью – 16 знаков (считать, конечно же, Максима умеет и численно, и весьма точно).
На рис. 2 на наш запрос вида
(%i1) 'integrate(exp(-x^2/2),x,–2,2); оболочка xmaxima вывела ответ в виде 8-ми строк.
Трудно согласиться с тем, что красивый знак интеграла xmaxima записывает таким корявым способом – в виде набора обычных
текстовыхсимволов. Рис. 2. Интерфейс xMaxima Возможности Максимы в консольной версии, как видим, — весьма
ограниченные. Без дополнительного графического интерфейса Максиму можно использовать лишь ввиду безысходности, так как голая консоль, или
все математические формулы «рисуются» обычными текстовыми символами – в несколько строк дисплея.
Однако за счёт отсутствия сложной графической надстройки понижаются требования к компьютеру (железу). Максима в консольном варианте способна работать даже на таких компьютерах, которые сегодня и за компьютеры уже никто не считает. Самостоятельная оболочка, xmaxima, ненамного более требовательна к ресурсам, чем консольный интерфейс, оснащена системой меню и позволяет встраивать графические объекты прямо в документ в момент их создания (по желанию пользователя), но математические знаки имитируются в ней, также как и в консольной версии, текстовыми символами.
Ещё два интерфейса, emaxima и imaxima, реализованы как библиотеки к редактору emacs и будут полезны тем, кто набирает свои работы в формате LaTeX. Четвёртый графический интерфейс к Максиме – это интерфейс к редактору TeXmacs. TeXmacs используется в первую очередь для работы с текстами научной тематики. Для интеграции Максимы с редактором TeXmacs сначала необходимо запустить TeXmacs, затем для подключения Максимы – на панели инструментов программы TeXmacs необходимо нажать на кнопку с изображением монитора и выбрать интерактивную сессию Maxima (рис. 3). Выбор пункта Maxima позволит начать сеанс работы с этой программой. И закончить … , если Maxima плохо интегрирована в редактор TeXmacs (рис. 4).
Впрочем, упомянутые интерфейсы в дистрибутив Alt-Linux не входят. В меню рабочего стола KDE Образование | Математика, Прочие | Научные и математические, Образование | Разработка, входит Графическая оболочка wxMaxima, которую мы и рассмотрим подробнее.
Рис. 3. Запуск Maxima в редакторе TeXmacs
Графическая оболочка wxMaxima (входящая в комплект поставки дистрибутива Alt-Linux) предоставляет пользователю удобный и понятный интерфейс на русском языке и графическое окно для результатов расчета (рис. 5). И, хотя в русскоязычной версии wxMaxima встроенной справки на русском языке пока нет, в сети Интернет непрерывно растет количество статей с примерами использования Maxima.
Рис. 4. Maxima не интегрирована в TeXmacs
На рис. 5 на аналогичный запрос вида (%i1)
' integrate (exp(–x^2/2),x,–2,2); графический интерфейс wxMaxima выводит красивый и привычный вид интеграла, правильное положение дробной черты, да и величина символов, используемых при записи показателя степени, явно меньше (то есть, величина
символов масштабируется) по Рис. 5. Графический интерфейс wxMaxima
Ввод простейших команд в wxMaxima
После запуска wxMaxima появляется окно программы, показанное на рис.
приготовилась воспринимать команды. Разделителем команд является символ ; (точка с запятой). После ввода команды необходимо нажать клавишу Enter для ее обработки и вывода результата.
В ранних версиях Maxima и некоторых ее оболочках (например, xMaxima), и в консольной версии наличие точки с запятой после каждой команды строго обязательно. Поэтому настоятельно рекомендуем при использовании Максимы не забывать добавлять точку с запятой ; после каждой команды.
В случае, когда выражение надо отобразить, а не вычислить, перед ним необходимо поставить знак ‘ (одинарная кавычка). Но этот метод не работает, когда выражение имеет явное значение,
например, выражение sin(π) Максима рассматривает как нуль и при наличии апострофа.
Трудно предусмотреть многообразие возможных вариантов использования Максимы для расчета или преобразования выражений. В сложных случаях, можно попытаться получить справку на английском языке. Для вызова справки достаточно в поле ВВОД написать ? и нажать Enter.
Обозначение команд и результатов вычислений
После ввода каждой команде присваивается порядковый номер. На приведенном ниже рисунке введенные команды имеют номера 1–3 и обозначаются соответственно (%i1), (%i2), (%i3). Результаты вычислений имеют соответственно порядковый номер (%o1), (%o2) и т. д. Где "i" – сокращение от англ. input (ввод), а "o" – англ. output (вывод).
Этот механизм позволяет при дальнейшей записи команд сослаться на ранее записанные, например (%i1)+(%i2) будет означать добавление к выражению первой команды выражения второй с последующим вычислением результата. Также можно использовать и номера результатов вычислений, например, таким образом (%o1)*(%o2).
Для последней выполненной команды в Maxima есть специальное обозначение – %.
Пример: Вычислить значение производной функции
в точке х=1.
Команда (%i9) была выполнена, и был получен результат (%о9). Поэтому следующая команда (%i10) сослалась на уже полученный результат, но уточнила значение переменной х, поэтому команда получала вид (%i10) (%о9), х=1.
Ввод числовой информации
Правила ввода чисел в Maxima точно такие, как и для многих других подобных программ. Целая и дробная часть десятичных дробей разделяются символом точка. Перед отрицательными числами ставится знак минус. Числитель и знаменатель обыкновенных дробей разделяется при помощи символа / (прямой слэш).
Обратите внимание, что если в результате выполнения операции получается некоторое символьное выражение, а необходимо получить конкретное числовое значение в виде десятичной дроби, то решить эту задачу позволит применение оператора numer. В частности он позволяет перейти от обыкновенных дробей к десятичным.
Здесь Maxima прежде всего действовала по умолчанию. Она сложила дроби 3/7 и 5/3 по правилам арифметики точно: нашла общий знаменатель, привела дроби к общему знаменателю и сложила числители. В итоге она получила 44/21. Лишь после того, как мы попросили её получить численный ответ, она вывела приближенный, с точностью 16 знаков численный ответ 2,095238095238095.
Константы
В Maxima для удобства вычислений есть ряд встроенных констант, самые распространенные из них показаны в следующей таблице (табл. 1):
Таблица 1
Названия констант и их обозначение в Maxima
Арифметические операции
Обозначения арифметических операций в Maxima ничем не отличаются от классического представления, используются математические знаки: + – * /.
Возведение в степень можно обозначать тремя способами: ^ , ^^ , **.
Извлечение корня степени n записывают, как степень ^^(1/n).
Напомним еще одну встроенную в Maxima полезную операцию – нахождение факториала числа. Эта операция обозначается восклицательным знаком.
Например, 6!=1 2 3 4 5 6=120.
Для увеличения приоритета операции, как и в математике, при записи команд для Maxima используют круглые () скобки.
Переменные
Для хранения результатов промежуточных расчетов применяются переменные. Заметим, что при вводе названий переменных, функций и констант важен регистр букв, так переменные x и X – это две разные переменные.
Присваивание значения переменной осуществляется с использованием символа: (двоеточие), например x: 5;.
Если необходимо удалить значение переменной (очистить ее), то применяется метод kill:
kill(x) – удалить значение переменной x;
kill(all) – удалить значения всех используемых ранее переменных.
И кроме того, метод kill начинает новую нумерацию для исполняемых команд (обратите внимание, что ответом на команду (%i3), приведенную выше, оказался ответ с номером ноль (%o0) done, и далее нумерация команд продолжилась с единицы).
Математические функции
В Maxima имеется достаточно большой набор встроенных математических функций. Вот некоторые из них (табл.2). Следует иметь ввиду, что некоторые названия функций отличаются от названий, используемых в отечественной литературе: Вместо tg – tan, вместо ctg – cot, вместо arcsin – asin, вместо arccos
– acos, вместо arctg – atan, вместо arcctg – acot, вместо ln – log, вместо cosec – csc.
Правило записи функций
Для записи функции необходимо указать ее название, а затем, в круглых скобках записать через запятую значения аргументов. Если значением аргумента является список, то он заключается в квадратные скобки, а элементы списка также разделяются запятыми.
Список сайтов и использованных источников
Русская версия сайта Maxima http://maxima. sourceforge.net/ru/ (редактор Алексей Бешéнов), он же на http://iais.kemsu.ru/odocs/lisp/maxima/index.htm
Системы компьютерной алгебры статья на сайте Denis Kirienko http://server.179.ru /tasks/maxima/1.html
Википедия о Maxima: http://ru.wikipedia.org/wiki/Maxima (дает ссылку введение в Maxima)
Введение в Максима (ссылка из Википедии) http://lib.custis.ru/index.php/ Maxima (очень кратко)
Перевод на русский язык статьи Роберта Додиера, Коротко о Maxima http://beshenov .ru/maxima/minimal-maxima.pdf
Основы работы в Maxima/wxMaxima. Maxima — максимум свободы символьных вычислений http://iais.kemsu.ru/odocs/lisp/maxima /maxima- tarnavsky-1.html
Дистанционное обучение от Mandriva.ru Основы работы в математическом пакете Maxima (Тьютор Тихон Тарнавский) http://etraining. mandriva.ru /index.php
http://www.pmtf.msiu.ru/chair31/students/spichkov/maxima2.pdf (Методическое пособие по изучению математического пакета Maxima) Математический практикум с применением пакета Maxima. (PDF)
Сборник типовых расчетов по высшей математике: Учебное пособие для технических вузов (под ред. Миносцева В.Б.) Изд. 4-е, перераб. М: 2004 – Изд–во: МГИУ – 582 с.