Глава 5. Сравнительные характеристики систем компьютерной математики
 
 
 
 

Как уже упоминалось, системы компьютерной математики представлены разработками различных фирм (MathSoft, MathWorks, Maple, Wolfram и др.). Прежде чем начать изучение конкретных систем, оценивая их достоинства и недостатки, мы познакомимся со структурой, принципами работы и элементами, которые характерны для всех систем компьютерной математики. Эти сведения позволят сделать осознанный выбор и потребуются для использования любой такой системы.

 

Структура универсальных систем компьютерной математики

Довольно условно структура СКМ показана на рис. 5.1.

 

Рис. 5.1. Структура универсальных систем компьютерной математики


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

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

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

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

Ядро, библиотеки, пакеты расширения и справочная система современных СКМ аккумулируют знания в области математики, накопленные за тысячелетия ее развития. Поэтому СКМ относят к интеллектуальным программным продуктам, одно из назначений которых — предоставление пользователю знаний в области численных методов расчета и моделирования, аналитической математики и современной графики.

 

Аппаратные требования и возможности систем

Возможность применения той или иной СКМ в решающей степени определяется ее аппаратными требованиями к ПК (табл. 5.1).

Таблица 5.1. Аппаратные требования к СКМ

СКМ

Процессор

ОЗУ,
Мбайт 
*

Емкость жесткого диска, Мбайт *

Устройство чтения компакт-дисков

Броузер

Derive 4.02

386

2/4

7,7

Не требуется

Не требуется

Derive 4.11

386/486

3/8

31,7

Не требуется

Не требуется

MuPAD 1.4

386/486

8

10

Не требуется

Не требуется

Mathcad 7

486

12/16

18/55

Требуется

Требуется

Mathcad 8

Pentium 90

16/32

30/80

Требуется

Требуется

Mathcad 2000

Pentium 90

16/32

30/80

Требуется

Требуется

Maple V R4

486DX

8/16

16/30

Требуется

Требуется

Maple V R5

486DX

8/16

32/80

Требуется

Требуется

Mathematica 2

386

8/12

14

Требуется

Требуется

Mathematica 3

386

8/16

24/120

Требуется

Требуется

Mathematica 4

386

16/24

40/156

Требуется

Требуется

MATLAB 5.2/5.3

486

16/24

30/395

Требуется

Требуется


* В числителе указано минимальное значение параметра, в знаменателе — рекомендуемое для уверенной работы системы.

Исследование современных СКМ позволяет оценить их возможности в образовании и науке. Соответствующие данные представлены в табл. 5.2.

Таблица 5.2. Особенности современных СКМ

Система

Назначение и достоинства

Ограничения и недостатки

Derive 4.01/4.11


 
 
 
 
 
 
 
 
MuPAD
1.41


 
 
 
 
 
Mathcad 8/2000


 
 
 
 
 
 
 
 
Maple V R4/R5/R6


 
 
 
 
 
Mathematica 2/3/4


 
 
 
 
 
 
MATLAB 5.0/5.3

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

Начальное и высшее образование. Хорошая графика. Развитые средства программирования. Развитые средства форматирования документов. Умеренные требования к аппаратным ресурсам

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

Университетское высшее образование и научные расчеты. Уникальное ядро символьных вычислений. До 3000 функций. Мощнейшая графика. Удобная справочная система. Развитые средства форматирования документов

Высшее образование и научные расчеты. Совместимость с разными компьютерными платформами. Уникальная трехмерная графика. Поддержка синтеза звука. Развитые средства форматирования документов. Мировое лидерство

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

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


 
 
 
 
 
Сложное форматирование графиков. Скромная справочная система. Малое время апробации и малая известность


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


 
Повышенные требования к аппаратным ресурсам. Отсутствие синтеза звуков. Ориентация на опытных пользователей и специалистов по математике


 
 
Высокие требования к аппаратным ресурсам. Чрезмерная защита от копирования. Слабая защита от “дурака”. Ориентация на опытных пользователей


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

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

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

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

• выполнение операций точной арифметики;

• вычисление фундаментальных констант с произвольной точностью;

• упрощение математических выражений;

• выполнение подстановок одних выражений в другие;

• расширение математических выражений;

• выделение общих множителей и делителей;

• комплектование выражений по степеням;

• операции со степенными многочленами;

• вычисление сумм и произведений рядов;

• дифференцирование выражений;

• интегрирование выражений;

• вычисление пределов функций;

• разложение функций в ряды Тейлора, Маклорена, Лорана и др.;

• поиск экстремумов функций и их асимптот;

• анализ функций на непрерывность (не у всех систем);

• интегральные преобразования Лапласа, Фурье и др.;

• дискретные Z-преобразования;

• прямое и обратное быстрые преобразования Фурье;

• работа с кусочно-нелинейными функциями;

• решение специальных задач в теории графов, нейронных сетей и т. д.

Вычисление элементарных и специальных математических функций:

• вычисление всех элементарных функций и осуществление их символьных преобразований;

• вычисление большинства специальных математических функций;

• пересчет координат точек для множества координатных систем (не у всех систем).

Численное и символьное решение уравнений:

• арифметические операции над числами без какой бы то ни было погрешности;

• решение линейных и нелинейных систем уравнений;

решение систем дифференциальных уравнений (не все системы);

символьное вычисление рядов;

работа с рекуррентными функциями;

решение трансцендентных уравнений;

решение систем с неравенствами;

решение задач нелинейного программирования.

Линейная алгебра:

множество операций с векторами и матрицами;

решение систем линейных уравнений с действительными и комплексными коэффициентами;

формирование специальных матриц и различные их преобразования;

вычисление собственных значений и собственных векторов матриц;

решение задач линейного программирования.

Графическая визуализация вычислений:

построение графиков многих функций;

задание различных типов осей (с линейным и логарифмическим масштабом);

графики функций в декартовой и полярной системах координат;

специальные виды графиков (точки массивов, векторные, диаграммы уровней и др.);

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

специальные графики, представляющие решения дифференциальных уравнений;

графики фазовых траекторий и портретов;

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

контурные, векторные и прочие специальные графики;

построение пересекающихся в пространстве объектов;

задание пользователем окраски графиков;

импорт графиков из других пакетов и программных систем;

задание анимированных графиков;

воспроизведение анимации с помощью специального проигрывателя.

Возможности расширения:

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

задание операторов пользователя (не у всех систем);

задание новых математических соотношений (не у всех систем);

задание внешних функций и процедур с хранением их на диске;

применение подключаемых библиотек операторов и функций;

применение пакетов расширения, специализированных на определенные классы вычислений;

интеграция с другими математическими и иными программными системами.

Программирование:

встроенный полноценный язык программирования;

простой синтаксис языка программирования;

обширный набор математических типов данных и встроенных функций;

типы данных, задаваемые пользователем;

средства работы с файлами и потоками информации;

средства создания пользовательского интерфейса программ (не у всех систем);

средства отладки программ;

программный интерфейс с другими языками программирования: С, Fortran и LaTeX (не у всех систем).

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

 

О русификации систем компьютерной математики

В отличие от офисных программ, все описанные здесь СКМ официально не русифицированы. Были инициативные попытки русифицировать системы Derive и Mathcad, но широкого распространения и официального признания у разработчиков, да и у пользователей, они не получили. И это не случайно.

Прежде всего, надо отметить, что интерфейс и входной язык СКМ постепенно приобрели свой специфический набор инструкций, команд, операторов и функций. Он максимально приближен к языку математики, а последний, как известно интернационален и основан на применении латинских и греческих символов и слов. Поэтому замена их русскоязычными сокращениями (например, син(х) вместо sin(x) или Упрощен(выр) вместо общепринятого Simplify(expr) и т.д.) ничуть не облегчает использование СКМ русскоязычными пользователями, зато содействует привитию пользователям явно дурного вкуса в области математической терминологии.

У большинства “русификаторов” математических систем духу обычно хватает лишь на то, чтобы русифицировать названия команд меню, польза от чего сомнительна, и некоторых сообщений об ошибках. Однако именно та часть СКМ, которую было бы полезно русифицировать, — мощная справочная база данных — обычно остается англоязычной. Ибо ее русификация требует больших затрат времени и сил и на деле не оправдана из-за быстрой смены версий систем и появления книг на русском языке. Более того, она реальна только при участии разработчика программы, владеющего ее исходными кодами. Исходя из этого в данной книге описаны лишь оригинальные англоязычные СКМ.

В то же время, благодаря ориентации СКМ на платформу Windows 95/98/NT, нет никаких проблем в подготовке русифицированных документов, в которых используются созданные под Windows наборы кириллических шрифтов.

 

Пользовательский интерфейс систем компьютерной математики

Несмотря на некоторое разнообразие пользовательского интерфейса СКМ даже с первого взгляда видно, что он для разных систем имеет много общих деталей — вплоть до одинакового обозначения кнопок панелей инструментов и команд меню. С них мы и начнем систематизированное рассмотрение пользовательского интерфейса СКМ. Основное внимание при этом уделено пользовательскому интерфейсу систем Mathcad 8/2000, Mathematica 3/4, Maple V R4/R5/R6 и MATLAB 5.0/5.3.

 

Главное окно приложения и его панели

Рассмотрим в качестве примера пользовательский интерфейс наиболее популярной системы компьютерной математики Mathcad 2000. Окно этой системы на рабочем столе Windows 98 показано на рис. 5.2. Запуск системы осуществляется из главного меню (раскрывающегося при щелчке на кнопке Пуск) или двойным щелчком на ярлыке системы на рабочем столе (на рисунке показан ярлык системы компьютерной математики Mathcad 2000).

 

Рис. 5.2. Окно Mathcad 2000 на рабочем столе Windows 98


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

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

 

Строка меню и панели инструментов и форматирования

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

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

Подобный (в принципе) вид основного окна имеет большинство систем компьютерной математики. Однако чем сложнее система, тем меньше в ней кнопок в панелях инструментов и форматирования. В частности, совсем мало их в системах MATLAB 5.0/5.3. А система Mathematica 3/4 вообще избавлена от такого “излишества”, как панели инструментов и форматирования в главном окне приложения. Эти панели, однако, можно вводить в отдельные окна документов. В строке меню практически всех математических систем имеются следующие позиции:

• File (файл) — работа с файлами (открытие, закрытие, запись на диск, печать);

• Edit (правка) — редактирование документов и использование буфера обмена;

• View (вид) — изменение средств отображения элементов интерфейса;

• Insert (вставка) — вставка объектов (включая графику);

• Format (формат) — изменение параметров форматирования объектов;

• Window (окно) — управление окнами системы;

• Help (справка) — работа со справочной базой данных о системе.

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

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

 

Работа с файлами

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

• New (создать) — открыть пустое окно нового документа или диалоговое окно для выбора типа документа;

• Open (открыть) — вывести диалоговое окно для поиска файлов документов и загрузки нужного документа;

• Close (закрыть) — закрыть текущий документ;

• Save (сохранить) — сохранить текущий документ на диске;

• Save as (сохранить как) — открыть диалоговое окно для поиска целевой папки и задания имени файла, с которым документ будет записан в выбранной папке;

• Page Setup (параметры страницы) — открыть диалоговое окно для задания параметров страницы;

• Print Preview (предварительный просмотр) — предварительный просмотр документа перед печатью (не во всех системах);

• Print (печать) — распечатать документ;

• Exit (выход) — выйти из системы и закрыть приложение.

Команда New открывает пустое окно и присваивает ему имя, например Nonname 1. При повторении этой команды открываются новые окна и им присваиваются имена Nonname 2, Nonname 3 и т. д. Возможны и другие имена, например Untitled 1. С команды New начинается подготовка нового документа.

Команда Open открывает диалоговое окно для поиска и открытия файлов (рис. 5.3). Хотя на рисунке показано окно системы Mathcad, его вид практически тот же и для других систем, поскольку используется типовое окно Windows 95/98/NT.

Открытый документ можно редактировать и модифицировать всеми средствами, присущими данной системе. Для записи документа под текущим именем используется команда Save. При необходимости изменить положение файла или его имя применяется команда Save As. Эта команда открывает диалоговое окно сохранения файла, аналогичное показанному на рис. 5.3.

 

Рис. 5.3. Окно открытия файла


Команда
Print Preview имеется не у всех СКМ. Она обеспечивает предварительный просмотр документа перед его печатью. Это очень полезная команда, поскольку позволяет избежать многократной пробной печати и экономит ныне дорогие бумагу и расходные материалы для принтеров. Другая команда Page Setup позволяет задать ряд полезных параметров печати, в частности размеры полей документа и его ориентации относительно листа бумаги. Наконец, команда Print выводит диалоговое окно печати (рис. 5.4). Как правило, используется не окно СКМ, а стандартное окно Windows 95/98.

 

Рис. 5.4. Диалоговое окно печати


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

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

 

Типовые средства редактирования документов

В меню Edit большинства математических систем представлены следующие команды

• Undo (отменить) — отменить последнюю операцию редактирования;

• Cut (вырезать) — переместить выделенный фрагмент в буфер обмена (clipboard);

• Сору (копировать) — скопировать выделенный фрагмент в буфер обмена;

• Paste (вставить) — вставить в документ содержимое буфера обмена;

• Paste Special (специальная вставка) — вставить объект из буфера обмена в специальном формате;

• Delete (удалить) — удалить выделенный фрагмент;

• Select All (выделить все) — выделить все объекты документа;

• Find (найти) — найти заданную текстовую или математическую строку.

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

В системах с развитым пользовательским интерфейсом, например Mathcad 8.0/2000, в меню Edit имеются дополнительные команды:

• Redo (повторить) — повторить последнюю отмененную операцию редактирования;

• Replace (заменить) — найти и заменить математическую или текстовую строку;

• Go to Page (перейти) — расположить начало указанной страницы в окне Mathcad;

• Check Speling (орфография) — проверка орфографии (для англоязычных документов);

• Links (связать) — создание связи с документом;

• Object (объект) — редактирование внедренного в документ объекта.

Для управления видом пользовательского интерфейса служат команды меню View.

 

Операции вставки

Введение любого объекта в окно редактирования называется вставкой (insert). Доступны различные механизмы вставки — от обычной вставки до внедрения или связывания объекта, созданного в другом приложении. В некоторых системах (Mathcad, Maple) соответствующие команды включены в меню Insert. В других системах (Derive, Mathematica, MATLAB и др.) для различных видов вставки используются команды других меню или вставка реализуется каким-либо иным способом.

Несмотря на разнообразие вставляемых объектов, операция вставки выполняется одинаково. Вначале курсором ввода намечается объект вставки (сам объект или его ячейка) и он выделяется. Возможно выделение сразу нескольких объектов (ячеек). Затем исполняется соответствующая команда вставки в буфер обмена — Сору (копировать) или Cut (вырезать). Вставке может предшествовать вывод простого диалогового окна, в котором указывается объект вставки (например, графический или текстовый файл). Щелчок на кнопке ОК реализует вставку объекта на место, ранее намеченное курсором ввода.

Многие современные СКМ обеспечивают еще один механизм вставки объектов — перетаскивание их из одного окна в другое (метод drag&drop), о котором уже упоминалось в первой части книги.

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

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

 

Управление окнами документов

Большинство математических систем являются многооконными и могут работать с несколькими документами одновременно. При этом каждый документ загружается в свое окно. Основные команды для работы с окнами сосредоточены в меню Window. Это команды Cascade (каскадом), Horizontal (по горизонтали) и Vertical (по вертикали), позволяющие расположить окна документов, соответственно, каскадом (как стопку карт), по горизонтали и по вертикали.

Для реализации метода drag&drop требуется соответствующее расположение окон источника и приемника объектов. Это расположение и обеспечивают команды меню Windows. Полученное первоначально расположение окон можно менять, перетаскивая окна мышью в более подходящее место. Если свернуть окна (не закрывая!), то они превращаются в кнопки, которые располагаются в нижней части главного окна системы. При этом их также можно перетаскивать с места на место, что может нарушить порядок панелей. В некоторых системах команда Arrange Icons (упорядочить значки) позволяет расположить кнопки в виде компактной группы в нижней части окна.

 

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

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

• оперативная справка с помощью окна Tip of the day (совет дня);

• всплывающая подсказка по элементам интерфейса, получаемая наведением на них указателя мыши;

• оперативная справка по операторам и функциям, получаемая нажатием клавиши F1 при курсоре ввода, установленном на операторе или в имени функции;

• оперативная справка, получаемая вводом символа ? или слова help, после которого указывается имя объекта, по которому требуется справка;

• оперативная справка, получаемая щелчком на кнопке ? панели инструментов и последующим щелчком на объекте;

• команды меню Help, которые обеспечивают доступ к дополнительным элементам справочной системы:

- гипертекстовая справка в формате HTML;

- электронные книги в формате RTF или HTML;

- самоучитель по системе Tutor;

- комплекты примеров применения системы.

Основная справочная информация сосредоточена в справочной системе. Доступ к ней открывают команды меню Help (иногда ?). Обычно предусматривается вызов справки по контексту или по алфавитному указателю, а также поиск разделов справки по заданным словам.

Рекордсменом по обилию справочных материалов является матричная лаборатория MATLAB 5.2.1/5.3. Объем только описаний системы в формате файлов RTF достигает 200 Мбайт — это соответствует десяткам книг обычного формата. По существу, с системой поставляется уникальная справочная информация по всем вопросам применения математики. И эта электронная документация является лишь частью полных справочных материалов. В их числе сотни эффективных примеров применения системы. Здесь особо надо отметить системы Maple V R4/R5/R6 — в их справочной системе около десятка тысяч примеров.

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

 

Средства общения с системами компьютерной математики

 

Понятие о языках программирования и общения

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

Работа с СКМ идет по правилу “задал вопрос — получил ответ”. При решении сложных задач возможны частые пробы и ошибки пользователя, поэтому практически во всех математических системах сохранена возможность программирования решаемых задач и отладки программ с помощью специальных отладчиков (debuggers).

Язык программирования СКМ является интерпретируемым и интерактивным (диалоговым). Это означает, что любая конструкция языка распознается специальным синтаксическим анализатором языка и при отсутствии в ней ошибок немедленно исполняется. При наличии ошибок выдается диагностирующее сообщение с указанием характера ошибок. В языках программирования математических систем предусмотрены средства структурного программирования, а в системах класса Mathcad — визуально-ориентированного программирования. В нем программирование сведено к выбору шаблонов операторов и функций.

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

 

Алфавит языков программирования

Алфавит входного языка большинства математических систем содержит 26 малых латинских букв (от а до z), 26 больших латинских букв (от А до Z), 10 арабских цифр (от 0 до 9) и 32 специальных символа (арифметические операторы +, -, *, /, знак возведения в степень ^ и др.). Все они будут постепенно рассмотрены в данной главе. В качестве знака присваивания используется комбинированный символ :=, реже — обычный знак равенства =.

Комментарии в программе, не выводимые в ячейки вывода, задаются после специального символа, например # (в системе Maple V),; (в системах Eureka и Mercury), % (в MATLAB) и т. д. В программных комментариях допустимо использовать все символы кодовых таблиц, что важно при вводе русскоязычных комментариев с символами кириллицы. Применение последних для идентификаторов (имен) объектов, как правило, недопустимо. В состав алфавита могут входить и ключевые (зарезервированные) слова. Зарезервированные слова имеют особый статус. Их нельзя использовать в качестве идентификаторов для переменных, функций, процедур и т. д.

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

 

Синтаксис языков программирования

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

Некоторые особенности синтаксиса полезно знать в самом начале освоения любой системы. Например, разделителем целой и дробной частей чисел является точка, а знак — (минус) имеет двойное значение. Применительно к одному числу, переменной или выражению он меняет их знак, то есть является унарным оператором. Однако два знака минус подряд (например, в записи -3) задавать нельзя. Другое назначение знака минус — реализация операции вычитания, например 5-2 или а-b. Соответственно, двойное назначение имеет и знак +, причем число без знака считается положительным, то есть +5=5.

При вводе действительных чисел с порядком для ввода порядка используется символ е (например, 123.456е10 или 123.456e-100) или число 10 (123.456*1010 или 123.456* 10-12). Обычно числа выводятся в определенном формате, чаще всего в форме действительного числа с нормализованной мантиссой и заданным числом цифр дробной части мантиссы. Чаще всего нормализация мантиссы означает, что до разделительной точки может быть число от 0 до 9, причем нередко 0 не отображается.

Для изменения общепринятого приоритета вычислений используются круглые скобки, в них же задаются параметры функций и процедур. Скобки относятся к операторам, как и знаки арифметических операций. Некоторые операторы представлены двумя символами, например, оператор присваивания переменным их значения (:=) содержит двоеточие и знак равенства. В таких операторах между символами недопустим знак пробела. Однако его можно использовать между отдельными частями выражений — так, (а+b)/с эквивалентно (а + b) / с.

К сожалению, единства в обозначениях операторов и функций пока нет. К примеру, в системах Mathematica символом присваивания является знак равенства =, тогда как во многих системах используется комбинированный символ присваивания :=. В большинстве систем параметры функций, например sin(x), задаются в привычных круглых скобках, а в системах Mathematica — в квадратных, причем название функции пишется с прописной (большой) буквы. По-разному обозначаются также массивы и списки — в одних системах в квадратных скобках [ ], в других — в фигурных { }.

Язык программирования математических систем позволяет, наряду с обычными программными конструкциями, задавать типы данных и специальные конструкции, резко упрощающие запись математических выражений. К примеру, возможна работа со списками имен функций (Maple V), многомерными массивами (MATLAB), явно выраженными операторами математических действий (Mathcad) и т. д. Языки систем символьной математики поддерживают множество операции над символьными выражениями и гибкий аппарат создания и преобразования типов данных и результатов вычислений.

 

Понятие о константах и переменных

Языки общения (программирования) СКМ имеют ряд констант, то есть именованных объектов, хранящих определенные заранее (при загрузке системы) значения. Например, это константы Pi (я), e (основание натурального алгоритма), i или j (мнимая единица или корень квадратный из -1) и т. д. Их можно также отнести к системным или предварительно определенным переменным. Системные переменные от истинных констант отличаются тем, что их можно переопределять в процессе работы.

Переменная в СКМ имеет тот же смысл, что и в математике. Это имеющий имя объект, который поначалу является неопределенным, то есть не имеющим конкретного значения. Если при обычных вычислениях применение неопределенных переменных недопустимо и вызывает ошибку, то в символьных вычислениях неопределенная переменная может использоваться для обобщенного представления математических выражений. Например, выражение a*sin(5*b) при неопределенных переменных а и b в символьной математике вполне допустимо и может подвергаться символьным преобразованиям. Различают глобальные переменные, применяемые повсюду, и локальные переменные, действующие в телах конструкций, например функций пользователя, циклов, процедур, пакетов расширения и др.

Имена переменных — идентификаторы — должны начинаться с буквы. В СКМ нет особых ограничений на длину имени. Однако не все символы алфавита допустимы в идентификаторах. В частности, как правило, недопустимы символы арифметических операций (+, -, *, / и ^). Оно и понятно — введение такого символа превращает имя в арифметическое выражение.

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

 

Понятие об операторах и функциях

Оператор — специальный знак, указывающий на то, что надо делать с некоторыми данными — операндами. Простейшими операторами являются арифметические операторы, например, в выражениях 2+3, a-b, c*d, e/f, 2^3 и т. д. Здесь знаки +, -, *, / и ^ являются арифметическими бинарными операторами, поскольку с ними используются два операнда. Есть и унарные операторы, работающие с одним операндом, например оператор вычисления факториала !, употребляемый в форме N!. В самых современных системах состав операторов существенно расширен, среди них есть символы дифференцирования, интегрирования, вычисления сумм и произведений рядов и т. д. Часто они выводятся с помощью палитр математических знаков (см. две из них для Mathcad 2000 на рис. 5.2).

Функция в языках программирования — это объект, имеющий имя и возвращающий результат преобразования списка параметров функции. В математические системы встроено множество функций — это, например, элементарные функции, такие как ехр(х), ln(x), sin(x) и т.д. Указанные функции имеют одну переменную, но могут быть и функции двух и более переменных. Обычно параметры функций вводятся в круглых скобках, но есть и исключения. В системах Mathematica, к примеру, параметры (аргументы) функций задаются в квадратных скобках, например, Sin[x], а в системах класса Derive имена функций задают прописными буквами, например, SIN(x). Приведем обозначения элементарных функций, входящих в систему Mathcad 8/2000:

• тригонометрические функции — angle(x,y), sin(z), cos(z), tan(z), sec(z), csc(z), cot(z);

• гиперболические функции — sinh(z), cosh(z), tanh(z), sech(z), csch(z), coth(z);

• обратные тригонометрические функции — asin(z), acos(z), atan(z), asec(z), acsc(z), acot(z);

• обратные гиперболические функции — asinh(z), acosh(z), atanh(z), asech(z), acsch(z), acoth(z);

• показательные и логарифмические функции — exp(z), ln(z), log(z);

• функции комплексного аргумента:

- Re(z) — выделение действительной части z;

- Im(z) — выделение мнимой части z;

- arg(z) — вычисление аргумента z.

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

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

имя_функции(список_параметров):=тело_функции

Телом функции является выражение, содержащее переменные, заданные в списке параметров. Такие переменные являются локальными (см. выше).

 

Другие объекты языков программирования математических систем

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

Некоторые системы (например, Maple V или Mathematica 3.0/4.0) перенасыщены операторами и функциями ввода/вывода и функциями преобразования данных. Это обусловлено их спецификой — реализацией сложных символьных операций. Однако настройка систем по умолчанию такова, что позволяет обычному пользователю забыть о большинстве указанных операторов и функций. Зато для опытного пользователя, например готовящего пакеты расширения таких систем, наличие указанных средств принципиально важно и полезно.

В целом надо отметить, что полноценный язык программирования характерен только для наиболее мощных систем — Maple V, Mathematica 3.0/4.0 и MATLAB 5.0/5.3. Системы класса Derive имеют зачаточный уровень функционального программирования, а возможности программирования в популярных системах Mathcad иначе как скромными не назовешь. Однако они дополнены мощными средствами визуально-ориентированного программирования, облегчающими работу с этими системами и позволяющими готовить документы высочайшего качества.