Математическая система Maxima

(Продолжение. Начало в №3)


Входной язык системы

Алфавит

Алфавит определяет совокупность символов и слов, которые используются для записи команд.

Алфавит системы содержит:

  • малые и большие латинские буквы;
  • малые и большие греческие буквы;
  • арабские цифры от 0 до 9;
  • системные переменные;
  • операторы;
  • имена встроенных функций;
  • специальные знаки;
  • малые и большие буквы кириллицы.


Правила синтаксиса языка системы

  1. Все имена команд и функций записываются буквами латинского алфавита.
  2. Аргументы команд и функций записываются в круглых скобках.
  3. Ввод команды завершается символом ";" или "$".
  4. Большая и маленькая буквы различаются.
  5. В числах целая часть от дробной отделяется точкой.
  6. Знаки арифметических операций обязательно должны указываться в выражениях.
  7. Порядок действий в выражении отвечает общепринятому порядку действий в математике.

Система осуществляет синтаксический контроль входных данных, и при наличии ошибки вместо ячейки вывода выводит соответствующее сообщение в ячейке ввода, которое содержит ошибку:


Текстовые комментарии

Для ввода комментариев выполняется команда Cell > Insert Text Cell (ячейка, вставить текстовую ячейку).

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

  1. Выполнить команду Правка > Настройка или щелкнуть на панели инструментов кнопку "Настроить wxMaxima", что приведет к появлению окна "Конфигурация wmMaxima".
  2. Перейти на вкладку "Стиль".
  3. В списке "Стили" выбрать элемент "Text Cell" и выбрать для него нужный шрифт, начертание и т.п.


Объекты системы

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


Операторы

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

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

Как было отмечено выше, нажатие <Enter> указывает системе на необходимость вычисления математического выражения. Если Maxima работает в режиме автоматических вычислений, то после этого будет получен результат. Однако если вычисления выполняются достаточно долго, то удобнее работать в ручном режиме, получая результаты вычислений только тогда, когда это необходимо. Выбор режима работы осуществляется в настройках системы. Обращение к настройкам осуществляется командой Правка > Настройка. После этого появится окно "Конфигурация wmMaxima", в котором для установки режима автоматических вычислений следует в группе "Параметры" установить флажок для поля-метки "Enter evaluates cells" (Выводить ячейки с вычислениями). В ручном режиме вычислить значение текущей ячейки можно командой Cell > Evaluate Cell (ячейка, вычислить ячейку), при помощи пункта "Evaluate Cell" из контекстного меню, если его вызывать на квадратной скобке ячейки, или нажатием комбинации клавиш <Ctrl>+<Enter>.

После вычисления объекта в ячейке Maxima выводит результат и ожидает следующую команду (на панели состояния в этой время отображается текст "Готова к вводу").

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

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

Табл. 1. Арифметические операции

Следует заметить, что система не имеет четкого разграничения между операторами и функциями. Более того, каждый оператор - это в действительности функция:

(%(%i1) "+"(1,3,5);

(%(%o1) 9

Если Maxima не может получить для выражения однозначный результат (например, если недостаточно данных), то она пытается максимально упростить это выражение. Например, если значение для переменной x не задано, то попытка определить для нее абсолютное значение приведет к такому результату:

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

Но система предоставляет возможность вычислить подобные выражения и в численном виде. Для этого следует выделить результат в ячейке вывода, вызывать на ней контекстное меню и выбрать из него пункт "To Float" (преобразовать в число с плавающей точкой).


Логические операторы (операторы отношения)

Логические операторы предназначены для сравнения двух величин.

Табл. 2. Логические операторы


Переменные

Правила присвоения имен переменным:

  1. они могут состоять из латинских букв и цифр, знака "минус", а также символов кириллицы;
  2. большие и маленькие буквы различаются;
  3. должны начинаться только с буквы;
  4. не могут содержать пробелов;
  5. не могут совпадать с именами встроенных или определенных пользователем функций, а также системных переменных.

Для присвоения переменным значений используют символ ":".

c:2; b:3;

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

Например:

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

Например:

В терминологии системы не вычисляемая форма выражения называется "noun form", а вычисляемая - "verb form".

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

Оператор, представляемый двумя апострофами, является синонимом функции ev. Сама функция ev предоставляет намного более широкие возможности, чем простое принудительное вычисление заданного выражения: она может принимать произвольное число аргументов, первый из которых является вычисляемым выражением, а остальные - это специальные опции, которые как раз и влияют на то, как именно будет проводиться вычисление. Точно так же, как двойной апостроф - сокращение для ev без дополнительных опций, есть еще и упрощенная запись функции ev с параметрами: в этом случае вместо имени функции и скобок вообще ничего писать не нужно; то есть выражение ev (выражение, опция1, опция2) можно записать как "выражение, опция1, опция2".

В системе существует возможность отображения всех переменных, которые используются в текущей сессии. Для этого следует выполнить команду Maxima > Show Variables (Показать переменные). После этого в ячейке ввода появится текст "values", а в ячейке вывода в квадратных скобках - перечень переменных.

Значение переменной можно очистить с помощью команды kill(). Для этого нужно ввести kill(name), где name - имя выражения, которое уничтожается; причем это может быть как имя, назначенное вами, так и любая ячейка ввода или вывода. С помощью команды kill(all) можно очистить сразу всю память и освободить все имена. В этом случае очистятся также и все ячейки ввода-вывода, а их нумерация опять начнется с единицы.


Размерные величины

Для использования размерных величин нужно дозагрузить специальный пакет:

load(units)

Для добавления единицы измерения после ввода числового значения следует ввести символ "*" и общепринятое сокращенное название единицы. В дальнейшем действия с такими переменными будут осуществляться с учетом единиц измерения.

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

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

Для возврата к системе МКС команда setunits имеет вид:

setunits([kg, m, s])

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

Convert[название величины, которую следует перевести в другую систему; название величины, которуе следует получить]


Системные (зарезервированные) переменные

Программа содержит несколько системных переменных. Как правило, имена системных переменных начинаются со знака "%". Это позволяет, в первую очередь, избежать их возможного совпадения с именами переменных, которые присваиваются пользователями, и которые зачастую стремятся сделать их максимально короткими. Благодаря этому также легко определить зарезервированные системой имена.

Зарезервированными именами ? и е обозначены общеизвестные математические константы; а через %c с номером обозначаются константы, которые используются во время интегрирования, для которых в математике использование буквы "c" является общепринятым.

Табл. 3. Основные системные переменные

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


Системные опции

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


Функции

Все функции и операторы Maxima работают как с действительными, так и с комплексными числами.

Правила записи функций:

  1. Имя функции начинается с маленькой буквы, поскольку в противоположном случае запись функции будет считаться символьным выражением.
  2. Аргументы функции заключаются в круглых скобках.
  3. Функции можно вкладывать одна в одну.
Табл. 4. Элементарные математические функции


Функции отсечения

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

Табл. 5. Функции отсечения


Функции пользователя

Система дает возможность создавать собственные функции.

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

Например:

(Продолжение следует)

Валерий ФЕТИСОВ

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

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!