Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Введение в пакет Maxima1

.pdf
Скачиваний:
28
Добавлен:
13.02.2015
Размер:
357.08 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Федеральное государственное образовательное учреждение высшего профессионального образования

«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

С.М. Кузьменко

Введение в систему аналитических вычислений Maxima

Часть 1

Ростов-на-Дону

2007

Введение к «Введению» (немного истории)

Многим известно имя американского певца Фрэнка Синатры, и, несмотря на то, что пик его популярности пришелся на 50-е годы ХХ века, практиче- ски в любом музыкальном магазине мира можно купить его записи. И это не удивительно: его бархатистый голос, в обрамлении симфоджаза, трудно пе- репутать с чьим-то другим. Удивительно другое: несмотря на то, что сам Си- натра называл своим кумиром другого певца, Бинга Кросби, имя Кросби из- вестно гораздо меньшему числу людей. Приложив определенные усилия, я раздобыл записи этого загадочного неизвестного и понял, что Синатра был прав: Кросби, как минимум, не хужеМораль истории очевидна: не все о чем мы никогда раньше не слышали плохо.

Поэтому, когда, работая с пакетом Maple, я прочитал в интервью с одним из основателей корпорации Waterloo Maple Кейтом Геддесом [7], что на раз- работку пакета Maple в 1980 году его подвигло отсутствие компьютера, дос- таточно мощного, для работы программы MACSYMA я попытался выяснить, что же это за MACSYMA, и жива ли она сегодня. Оказалось, что жива, впол- не здравствует и даже размножилась (делением).

Итак, началось все в 1968 году, когда в рамках работы над проектом ис- кусственного интеллекта в Масачуссеттском технологическом институте (MIT), при финансировании некоторых правительственных структур Соеди- ненных Штатов, в частности Департаментов обороны и энергии (DOD и DOE) была создана первая в мире система компьютерной алгебры. Собст- венно, и название MACSYMA представляет собой аббревиатуру от

«Massachusetts computation symbolic algebra». Написана она была на одном из диалектов языка Lisp, и требовала для своей работы мощнейших, в то время компьютеров PDP-6, а впоследствии PDP-10. В 1982 году система MACSYMA была лицензирована MIT двум различным владельцам, соответ- ственно появились две коммерческие версии: Symbolics MACSYMA и DOE MACSYMA, которые начали развиваться независимо друг от друга. В 1998

1

году профессор Техасского Университета Уильям Шелтер, сопровождавший версию DOE MACSYMA с момента ее возникновения, получил от Департа- мента энергии разрешение опубликовать исходный код системы под лицен-

зией GPL. В 2000 году DOE MACSYMA, переписанная на Common Lisp, бы-

ла переименована в «Maxima» и поддерживается, по сей день независимой группой пользователей и разработчиков.

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

Единственное, что может омрачить жизнь русскоязычного пользователя это малый объем информации по Maxima на русском языке. Вышедший в журнале Linux Format цикл статей Тихона Тарнавского [1-6], не стал (почему понятно из названия журнала) широко известен пользователям MS Windows. Входящее же в файл справки Maxima полное руководство пользователя пока что не переведено на русский язык. Да и знакомиться с программой по доку- менту, насчитывающему в твердой копии более трехсот страниц занятие не из легких. Здесь, в рамках кратких методических указаний, предполагается по- знакомить пользователя с базовыми возможностями пакета Maxima и облег- чить ему дальнейшее самостоятельное изучение этой обширной системы.

Для дальнейшей работы пользователю будет необходим сам пакет Maxima, который может быть загружен с сайта проекта: http://maxima.sourceforge.net/. Актуальная на сегодняшний день версия имеет номер 5.12.99, и все примеры будут проиллюстрированы именно с ее помо- щью.

2

Пользовательский интерфейс (как общаться будем?)

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

Рис. 1. Консольный запуск Maxima.

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

Кроме консольного интерфейса в поставку Maxima (как для MS Windows, так и для Linux) входят и два графических интерфейса. Первый из них – xMaxima ничем принципиальным от консольного варианта, кроме белого фона и возможности выбрать любой системный шрифт не отличается. Вто- рой же – wxMaxima по своим возможностям вполне удовлетворителен (хоть и не так удобен, как интерфейсы таких коммерческих продуктов, как Maple или Mathematica), и именно ему мы уделим основное внимание. Существует еще много различных интерфейсов для Maxima, большинство из которых,

3

разработаны для Linux. Желающие получить о них более подробную инфор- мацию, могут обратиться к статье [2].

Итак, рассмотрим подробнее интерфейс wxMaxima (предполагается, что при установке выбрана его русскоязычная версия).

Рис. 2. Интерфейс wxMaxima.

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

Два первых пункта главного меню – « Файл» и «Правка», как и последний его пункт – « Помощь» в особых пояснениях не нуждаются. Скажем только, что в пункте меню «Файл» wxMaxima может открывать как свои собствен- ные сохраненные сессии (*.wxm), так и пакетные файлы Maxima (*.mac), что же касается пункта «Правка», то я посоветовал бы зайти в последний пункт его подменю – « Настройка», и там, в закладке «Стиль» разрешить использо-

4

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

Дело в том, что от «консольности» Maxima окончательно избавиться не удалось. Исторически, все команды вводились с клавиатуры последователь- но, и были снабжены метками %in (от input), где n – номер введенной коман- ды. Аналогично нумеруются и строки вывода – %on ( от output). Соответст- венно, вернуться, и поменять какую-либо строку было невозможно. Хотя wxMaxima не столь категорична, но способ редактирования предыдущих ко- манд не очевиден.

Рабочее пространство интерфейса делится на две части: поле вывода и командную строку. В поле вывода отображаются команды, введенные поль- зователем, и соответствующая им реакция Maxima (либо результат вычисле- ния, либо сообщение об ошибке). Для ввода команд используется располо- женная в нижней части экрана строка ввода. При необходимости много- строчного ввода, для открытия соответствующего диалога, можно воспользо- ваться либо клавиатурной командой <Ctrl-I>, либо кнопкой, расположенной справа от командной строки. Если же мы захотим изменить введенную ранее команду, и повторить вычисления, на которые эта замена оказывает влияние, то нам необходимо выполнить определенную последовательность действий:

1.выделить с помощью мыши выражение, подлежащее редактированию;

2.щелчком правой кнопки вызвать контекстное меню и выбрать в нем «Ре- дактировать ввод»;

3.после завершения редактирования нажать на клавиатуре <Ctrl-Enter>.

5

Последующие строки могут быть повторно вычислены с помощью мно- гократных нажатий <Ctrl-Enter>. При этом, номера меток вновь вычисляемых строк будут изменяться.

Любая строка ввода может быть снабжена текстовым комментарием. Для этого необходимо выделить в поле вывода строку и, вызвав правой кнопкой мыши контекстное меню, выбрать в нем пункт «вставить текст». Ввод ком- ментария завершается нажатием <Ctrl-Enter>.

При длительной работе с wxMaxima, может оказаться полезным исполь- зование наряду с контекстным меню, клавиатурных сокращений. Список не- которых из них приводится ниже.

Таблица 1

Краткий список полезных клавиатурных сокращений

 

Сокращение

 

Действие

 

 

 

 

 

F3

 

Перемещение фокуса в поле вывода

 

 

 

 

 

F4

 

Перемещение фокуса в командную строку

 

 

 

 

 

F5

 

Копирование выделенного в поле вывода выра-

 

 

жения в командную строку

 

 

 

 

 

 

 

 

F6

 

Добавление текстового комментария перед выде-

 

 

ленным в поле вывода выражением

 

 

 

 

 

 

 

 

F7

 

Добавление строки ввода перед выделенным в

 

 

поле вывода выражением

 

 

 

 

 

 

 

 

Enter

 

Редактирование текста команды в поле вывода

 

 

 

 

 

 

 

1. В процессе редактирования его завершение.

 

<Ctrl-Enter>

 

2. Повторное вычисление выделенного в поле вы-

 

 

 

вода выражения

 

 

 

 

 

Esc

 

Завершение редактирования, без применения его

 

 

результатов

 

 

 

 

 

 

 

 

 

 

1. При фокусе в поле вывода перемещение ме-

 

Стрелки ↑ и ↓

 

жду строками команд.

 

 

2. При фокусе в командной строке перемещение

 

 

 

 

 

 

по истории команд

 

 

 

 

6

Итак, представляя себе теперь, как набирать и редактировать команды Maxima, попробуем разобраться, а что, собственно, набирать.

Как устроена Maxima

(идентификаторы, типы данных, синтаксис и так далее…)

Идентификаторы

Для конструирования идентификаторов (имен) в Maxima могут использо- ваться прописные и строчные символы латинского алфавита, цифры от 1 до 9 и любые другие специальные символы, предваряемые символом «обратный слеш» – «\».

Прописные и строчные символы в Maxima различаются, поэтому Equation, EQUATION и equation это три различных идентификатора.

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

Встроенные служебные идентификаторы начинаются с символа «%». Со- ответственно содержимое строк ввода и вывода доступно через их идентифи- каторы (метки). Последняя строка вывода доступна через идентификатор %.

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

Список зарезервированных слов Maxima

and

at

diff

do

else

elseif

for

from

if

in

integrate

limit

next

or

product

step

sum

then

thru

unless

while

Константы

К основным встроенным константам относятся:

%e – число е = 2.718281828459045… – основание натурального логарифма;

7

%i – число i = −1 – мнимая единица; %pi – число π = 3.141592653589793…

%gamma – γ = 0.5772156649015329… – константа Эйлера; inf – положительная действительная бесконечность;

minf – отрицательная действительная бесконечность; infinity – комплексная бесконечность;

true, false – логические (булевские) константы «истина» и «ложь».

Типы данных

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

К простым типам данных отнесем: числовой, строковый и логический. Числовые данные могут быть как целыми, так и дробными, причем дроби

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

Строковыми данными являются последовательности символов, заклю-

ченные в двойные кавычки «"». Для включения в строку символа двойных кавычек им должен предшествовать обратный слеш \", аналогично дело об-

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

Логический тип состоит из двух значений true и false, для которых опре- делен набор логических операций.

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

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

8

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

Что же касается матриц, то для их задания используется команда matrix:

Операторы и функции

Начнем рассмотрение с арифметических операторов. Сложение, вычита- ние, умножение, деление и возведение в степень традиционно обозначаются символами +, –, *, /, ^ соответственно. Эквивалентной формой записи для возведения в степень, является **. Определенная тонкость, никак не отра- жающаяся на правилах составления выражений, существует с бинарным опе- ратором вычитания, дело в том, что в Maxima его просто нет. Знаком обо- значается унарный минус, соответственно выражение (a – b) понимается как

a+(–b).

9