
Тема 4. Входной язык системы matlab
Цель работы: Освоить студентами понятие о математическом выражении и числах. Изучить системные переменные и символьные константы, работу с ними. Текстовые комментарии.
В MATLAB математические выражения записываются построчно, как это принято в большинстве языков программирования:
2+3
2.301*sin(x)
4+exp(3)/5
sqrt(y)/2
sin(pi/2)
Математические выражения состоят из чисел, констант, переменных, операторов и функций, а также разных спецзнаков. Ниже представлены примеры задания чисел:
0 |
2 |
-3 |
2.301 |
0.0001 |
123.456е-24 |
-224.456е10 |
3i |
2j |
2+3i |
-3.141i |
-123.456+2.7e-3 |
Функция real(z) возвращает действительную часть комплексного числа z, а функция imag(z) – мнимую. Для получения модуля комплексного числа используется функция abs(z), а для вычисления фазы – angle(z).
Операции над числами выполняются в формате с двойной точностью. Такой формат удовлетворяет подавляющему большинству требований к численным расчетам. Символьные вычисления MATLAB может выполнять с помощью специального пакета расширения Symbolic
Для переноса длинных строк используется многоточие (три или более точек), например:
s = 1 – 1/2 +1/3 – 1/4 + 1/5 – 1/6 + 1/7 …
1/8 + 1/9 – 1/10 + 1/11 – 1/12;
Этот прием может быть весьма полезным для обеспечения наглядности документов (чтобы строки не оказывались вне видимой области окна). Максимально число символов в одной строке – 4096, но со столь длинными строками работать неудобно.
В MATLAB используются следующие системные переменные:
i или j – мнимая единица (корень квадратный из -1);
pi – число «пи» 3, 1415926…;
eps – погрешность для операций над числами с плавающей точкой;
realmin – наименьшее число с плавающей точкой;
realmax – наибольшее число с плавающей точкой;
inf – значение машинной бесконечности;
ans – переменная, хранящая результат последней операции и обычно вызывающая его отображение на экране дисплея;
NaN – указание на нечисловой характер данных.
Системные переменные могут переопределяться. Так, можно задать системной переменной eps иное значение, например eps=0.0001. Важно то, что значения системных переменных по умолчанию задаются сразу после загрузки системы. Поэтому неопределенными, в отличие от обычных переменных, системные переменные не могут быть никогда.
Символьная константа – это цепочка символов, заключенных в символы одиночной кавычки.
Если в одиночные кавычки помещено математическое выражение, оно не вычисляется, а рассматривается просто как цепочка символов. Однако с помощью специальных функций преобразования символьные выражения могут быть преобразованы в вычисляемые.
Текстовые комментарии вводятся с помощью оператора %. Обычно в определениях m-файлов первые строки определений служат для их описания, которое выводится на экран дисплея после команды » help Имя_файла. Желательно вводить достаточно подробные текстовые комментарии в m-файлы.
В системе MATLAB можно задавать переменным определенные значения. Для этого используется операция присваивания, вводимая оператором равенства =.
Типы переменных заранее не объявляются, а определяются выражением, значение которого присваивается переменной. Имя переменной (ее идентификатор) может содержать сколь угодно символов, но сохраняются и идентифицируются только 31 символ.
В памяти переменные занимают определенное место, называемое рабочей областью (workspace). Средство для ее просмотра уже описывалось.
Для очистки рабочей области используется функция clear в разных формах, например:
clear – удаление определений всех переменных;
clear x – удаление определения переменной x;
clear a, b, c – удаление определений переменных списка и т.д.
Для дефрагментации всей рабочей области памяти служит команда pack. Удаленная переменная становится неопределенной.
Важное значение при диалоге с сиcтемой MATLAB имеет диагностика ошибок. Рассмотрим ряд примеров. Введём, к примеру, ошибочное выражение:
» sqr(2)
Теперь нажмём клавишу Enter. Система сообщит об ошибке:
??? Undefined function or variable ‘sqr’ .
Это сообщение говорит, что не определена переменная или функция, и указывает, какая именно – sqr . В данном случае, разумеется, можно просто набрать правильное выражение. Однако в случае громоздкого выражения лучше воспользоваться редактором. Для этого достаточно нажать клавишу перелистывания строк ↓.
В результате появится выражение
» sqr (2)
Теперь с помощью клавиши→ следует установить курсор после буквы r и нажать клавишу t на нижнем регистре, а затем – клавишу Enter.
» sqrt(2)
ans =
1.4142
Теперь вычисления дают ожидаемый результат – значение квадратного корня из двух.
В системе MATLAB внешние определения используются точно так же, как и встроенные функции и операторы. Никаких указаний на их применение делать не надо. Достаточно позаботиться о том, чтобы используемые определения действительно существовали в виде файлов с расширением .m. Впрочем, если вы забыли об этом или ввели имя несуществующего определения, то система отреагирует на это звуковым сигналом и выводом сообщения об ошибке:
» hsin(1)
??? Undefined function or variable ‘hsin’.
» sinh(1)
ans =
1.1752
Иногда, что уже отмечалось, в ходе вывода данных вычислений появляется сокращение NaN (от слов Not a Number – не число). Оно обозначает операцию неопределенности, например вида 0/0 или Inf/Inf. Могут появляться и различные предупреждения об ошибках (на английском языке). Например, при делении на 0 конечного числа появляется предупреждение Warning: Dievide by Zero. (Внимание: деление на 0).
В MATLAB надо отличать предупреждение об ошибке от сообщения о ней. Предупреждения (обычно после слова Warning) не останавливают вычисления и лишь предупреждают пользователя о том, что диагностируемая ошибка способна повлиять на ход вычислений. Сообщение об ошибке (после знаков ???) останавливает вычисления.
Весь диапазон представления чисел в системе лежит от 10-308 до 10+308. По умолчанию MATLAB выдает числовые результаты в нормализованной форме с четырьмя цифрами после десятичной точки и одной до нее. Для изменения формата используется команда format:
x=[4/3 1.2345e-6]
format short 1.3333 0.0000
format short e 1.3333E+000 1.2345E-006
format long 1.33333333333333 80.000001234500000
format long e 1.3333333333333338E+000 1.23450000000000E-006
format bank 1.33 0.00
Задание формата сказывается только на форме вывода чисел. Вычисления все равно происходят в формате двойной точности, а ввод чисел возможен в любом удобном для пользователя виде.