Warning: include(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include_once(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82

Warning: include_once(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82
Обработка и индикация ошибок | Учебники

Главная > Maple 15 > Обработка и индикация ошибок


Обработка и индикация ошибок

Обработка и индикация ошибок
При работе с системой Maple 15 надо строго придерживаться правил корректного ввода выражений и иных объектов Maple-языка, называемых синтаксисом языка. Однако, как гласит русская пословица, не ошибается только тот, кто ничего не делает. Даже у опытного пользователя возможны ошибки в ходе ввода выражений и задания алгоритмов вычислений.
Алгоритмические, но синтаксически корректные ошибки часто могут не распознаваться системой. Например, если в выражении a*sin(x) вы вместо аргумента х взяли аргумент b, то есть записали a*sin(b), то такую ошибку Maple 15 распознать не может, ибо синтаксически как a*sin(x), так и a*sin(b) абсолютно корректны. Если вы перепутаете синус с косинусом и запишете a*cos(x), то такая ошибка также не будет распознана.
ПРИМЕЧАНИЕ
Ошибки в записи выражений, описывающих те или иные алгоритмы вычислений, не  нарушающие синтаксическую корректность, системой Maple 15 не распознаются. Контроль за такими ошибками целиком лежит на пользователе.
Приведем еще один характерный пример ошибки, которую Maple 15 не может распознать. Вводя выражение X/Y*Z, мы можем предположить, что это означает X/(Y*Z). Однако в Maple 15 приоритет операций деления и умножения одинаков. Поэтому Maple 15 вначале делит X на Y, а затем полученный результат умножает на Z:

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

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

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

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

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

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

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

В этом примере Maple 15 вначале вычисляет функцию синуса, затем производит возведение в степень и лишь потом операцию умножения. Впрочем, такой приоритет операций принят практически во всех системах компьютерной математики и в языках программирования.
Некоторые пользователи версии системы Maple V R5 наблюдали, что русская буква «я» в конце программного комментария (он вводится после символа #) вела к зависанию программы, что требовало ее перезагрузки. В Maple 15 этот недостаток устранен:
> #Буква "я" в конце комментария уже не вызывает зависания 

Позже, при описании программирования в Maple 15, мы опишем более развитые средства контроля над допускаемыми пользователем ошибками. Пока же ограничимся приведенными ‘Выше сведениями, полезными уже в начале диалога с системой.
Управление с помощью мыши
Для управления состоянием ячеек можно использовать контекстное меню, появляющееся при нажатии правой кнопки мыши. Если установить указатель мыши на входной ячейке, то это меню будет содержать три команды:

  •  Standard Math — включает и выключает показ входных выражений в естественной математической форме;
  •  Maple Input — управляет видом ячейки ввода (математический/текстовый); 
  •  Execute — включает выполнение ячейки.

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

Примеры задания функции пользователя и построения ее графика
показано, как задается функция пользователя f(x) с одним параметром х. Нетрудно заметить, что параметр указывается в скобках после имени функции а для записи выражения функции используется знак присваивания := (двоеточие со знаком равенства). Для построения графика функции f (х) используется функция plot в форме:

Нетрудно заметить, что при наличии нескольких параметров функции (в нашем случае их два) они разделяются запятыми. Выражение х=-15. .15 задает, во-первых, указание, относительно какой переменной строится график, а во-вторых, говорит, в какой области значений меняются значения этой переменной — в нашем случае от -15 до +15. Шаг изменения переменной выбирается автоматически в зависимости от размеров и вида графика.
Пример построения трехмерного графика поверхности
Столь же просто, как и график обычной функции в декартовой системе координат, можно построить график трехмерной поверхности. Это показано на примере. В данном случае задана функция двух переменных z(x,y) :=sin(x*y) и ее график строится с использованием графической функции plot3d. Правила задания пределов изменения переменных х и у соответствуют описанным выше.

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

Статьи по теме

Комментарии запрещены.