Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Сообщения об ошибках и их исправление

 

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

Пример предупреждения:

>> sin(0)/0

Warning: Divide by zero.

ans =

NaN

При сообщении об ошибке красного цвета(после знаков???) MATLAB не выдает решение. Вычислим, например, значение с помощью встроенной элементарной функции sqrt (квадратный корень), введя выражение

>> sqr(2)

??? Undefined function or variable 'sqr'.

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

Существует несколько способов возврата в строку ввода ранее введенных команд.

Первый способ – с помощью клавиш <↑> и <↓> (см. разд. 2).

При вычислении значения обнаружена синтаксическая ошибка: не определена функция sqr. Клавишей <↑> вернем команду >> sqr(2) в командную строку. Отредактируем ее: после sqr вставим t и нажмем клавишу < Enter>:

>> sqrt(2)

ans =

1.4142

Второй способ – копирование из окна Command History.

Для активизации окна Command History необходимо войти в меню View командного окна, выбрать вкладку с одноименным названием и щелкнуть на ней левой кнопкой мыши (поставить галочку). В этом окне отображаются дата и время каждого сеанса работы в MATLAB, а также перечень команд, вводимых в течение каждого сеанса (рис. 4).

Если в окне Command History дважды щелкнуть левой кнопкой мыши на какой - либо команде, эта команда будет выполнена. Это равнозначно вводу данной команды в командное окно и последующему нажатию клавиши < Enter> (рис. 4).

 

 

Рис. 4

Если щелкнуть на какой - либо команде окна Command History левой кнопкой мыши, то данная команда становится текущей (на синем фоне). Можно выделить нужную последовательность команд при помощи комбинации клавиш <Shift>+<↑>, <Shift>+<↓>. При щелчке правой кнопкой мыши на выделенной области окна Command History появляется всплывающее меню. Выбор пункта Copy приводит к копированию выделенной последовательности в буфер обмена Windows. При щелчке правой кнопкой мыши на области окна Command Window появляется всплывающее меню. Выбор пункта Paste приводит к вставке скопированной последовательности команд в командную строку. Весь вставленный в командную строку набор команд отправляется на выполнение нажатием клавиши < Enter>.

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

Третий способ – копирование из содержимого текстового поля рабочего окна.

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

При вычислениях любое арифметическое выражение набирается с клавиатуры в командной строке. Редактор MATLAB укажет на синтаксические ошибки. Но он не обнаружит так называемые семантические (смысловые) ошибки, когда, например, пользователь ошибочно заменит знак операции <+> на <–> или неверной расстановкой скобок изменит общий порядок выполнения операций и т. д.

MATLAB совместно с пакетом ToolBox Symbolic Math предоставляет возможность визуального контроля введенного выражения.

Пусть требуется вычислить значение выражения

 

F =

 

при x = 0,1, y = 0,2.

Введем значения переменных x и y. Наберем с клавиатуры арифметическое выражение F и вычислим его значение, нажав клавишу < Enter>. Редактор MATLAB синтаксических ошибок ввода не обнаружил. В результате получим F = 7,2111 (рис. 5).

В третьей командной строке редактируется предыдущая команда (<↑>) для придания арифметическому выражению F статуса символьного с помощью команды sym. Выведенное в командное окно символьное выражение F синтаксически совпадает с арифметическим.

 

 

Рис. 5

Далее команда pretty(F) выводит в командное окно символьное выражение F в виде, близком к математической формуле. Выведенная и исходная формулы не совпадают. Предполагаемая ошибка ввода – знаменатель исходной дроби не заключен в скобки.

В пятой командной строке редактируется третья команда (<↑↑>) для устранения ошибки ввода.

Затем команда pretty(F) отображает в командном окне исправленное выражение. Теперь выведенная формула совпадает с исходной.

В седьмой командной строке редактируется пятая команда (<↑↑>) для придания исправленному символьному выражению статуса арифметического. Седьмая команда вычисляет правильный результат F = - 2,6904.

Иногда появляется совершенно неожиданный или явно неправильный результат. Так, если вы попытаетесь вычислить при x = -8, набирая

>> x=-8;r=x^(1/3)

r =

1.0000 + 1.7321i

ответ, который система MATLAB создает, не похож на ожидаемый результат -2. Тем не менее, полученный результат является кубическим корнем из -8, что подтверждается возведением этого результата в куб:

>> r^3

ans =

-8.0000 + 0.0000i

Дело в том, что многозначная функция имеет в комплексной плоскости три ветви, а уравнение x3 = -8 – три разных значения корня:

>> solve('x^3=-8')

ans =

[ -2]

[ 1-i*3^(1/2)]

[ 1+i*3^(1/2)]

Система MATLAB воспринимает для отрицательного x как значение

 

.

 

Поэтому для получения ожидаемого результата при вычислении, x = -8, надо набирать

>> x=-8;r=sign(x)*abs(x)^(1/3)

r =

-2

Это обстоятельство надо обязательно учитывать, например, при построении графика функции y =.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 338; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.