Ошибки в записи выражений, описывающих те или иные алгоритмы вычислений, не нарушающие синтаксическую корректность, системой Maple не распознаются. Контроль за такими ошибками целиком лежит на пользователе. Приведем еще один характерный пример ошибки, которую Maple не может распознать. Вводя выражение X/Y*Z, мы можем предположить, что это означает X/(Y*Z). Однако в Maple приоритет операций деления и умножения одинаков. Поэтому Maple вначале делит X на Y, а затем полученный результат умножает на Z:

> X/Y*Z:

> %;

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

Используйте блокировку вычислений с помощью знака двоеточия только в том случае, когда вы абсолютно уверены в правильности записи выражения — например, когда она очевидна и без повторения в строке вывода. Иначе вы можете не заметить вкравшейся в вычисления серьезной ошибки. В нашем примере мы получили бы верный результат, заключив выражение Y*X в круглые скобки. Как обычно, они предназначены для задания явного приоритета выполнения операций — в нашем случае вначале будет вычислено выражение в скобках (Y*Z), а затем уже X будет поделено на это выражение:

> X/(Y*Z);

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

> son(1.0);

son(1.0)

В этом примере вместо имени функции sin введено ошибочное имя son. Maple воспринимает его как некую, введенную пользователем, функциональную зависимость, и потому просто повторяет запись и не выводит сообщение об ошибке. А вот другая ситуация — имя функции sin введено верно, но вместо десятичной точки при задании вещественного числа 1.0 использована запятая:

> sin(1,0);

Error, (in sin) expecting 1 argument, got 2

В данном случае Maple «знает», что работа идет с его встроенной функцией синуса, которая должна иметь единственный аргумент. Задание (1,0) означает, что пользователь ввел вместо вещественного числа два целочисленных числа, разделенных запятой. На это Maple отреагировал выдачей сообщения об ошибке (на экране дисплея оно имеет малиновый цвет). Исправьте ошибку, и синус единицы будет благополучно вычислен:

> sin(1.0);

.8414709848

А вот еще одна типичная ситуация — в последовательности выражений опущен знак-разделитель (двоеточие или точка с запятой):

> X:=2: Y:=3| Z:=4:

Error, missing operator or ';'

Тут Maple не только реагирует на ошибку, но и пытается подсказать, что именно пропущено. Более того, маркер ввода в виде мигающей вертикальной черточки будет помешен на место ошибки, и вы сможете тут же устранить ошибку. Правда, подсказки не всегда точны — в нашем случае явно пропущен разделитель в виде двоеточия, a Maple сообщает о пропуске точки с запятой. Впрочем, откуда системе знать, хотим мы вывести результат операции Y:=4 сразу (для этого нужен разделитель в виде точки с запятой) или откладываем на потом (с помощью символа двоеточия).

Вот еще один пример характерной ошибки — три знака * подряд:

> 2**|*3*sin(1.);

Error, `*` unexpected

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

> 2**3*sin(1.);

6.731767878

> 2^3*sin(1.0);

6.731767878

> 2^(3*sin(1.0));

5.753392735

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

1.11.5. Применение контекстного меню правой клавиши мыши

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

Удобство контекстного меню заключается в том, что оно всегда содержит только те команды, которые относятся к выбранному объекту. Контекстных меню в Maple великое множество и на копиях экрана примеров время от время будут приводиться разные варианты этого меню. Например, на рис. 1.19 показано контекстное меню двумерного графика с открытой позицией Style, позволяющей выбрать различный стиль линий графика. Позиция контекстного меню Export As открывает список графических форматов файлов, в которых может быть сохранен рисунок, представленный в графическом окне.

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

Standard Math — включает и выключает показ входных выражений в естественной математической форме;

Maple Input — управляет видом ячейки ввода (математический/текстовый);

Execute — включает выполнение ячейки.

Также, в зависимости от состояния буфера обмена и наличия выделения, в контекстном меню могут присутствовать команды Cut, Сору и Paste.

Левая кнопка мыши может использоваться для передачи фокуса или переноса маркера ввода, а также выделения частей документа.

1.11.6. Примеры задания функции пользователя и построения ее графика

На рис. 1.20 показан ряд простых вычислений. Среди них задание функции

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату