Для просмотра содержимого массивов удобно использовать браузер рабочего пространства Workspace. Каждый вектор и матрица в нем представляются в виде квадратика с ячейками, справа от которого указывается размер массива. Двойной щелчок по квадратику мышью ведет к появлению окна редактора массивов Array Editor. Работа с редактором массивов вполне очевидна – возможен не только просмотр элементов массивов, но и их редактирование и замена.
Как видно из приведенных примеров, ввод исходных выражений для вычислений в системе MATLAB осуществляется в самом обычном текстовом формате. В этом же формате выдаются результаты вычислений, за исключением графических. Приведем примеры записи вычислений, выполненных системой MATLAB в командной строке:
Работасредактороммассивов
To get started, select "MATLAB Help" from the Help menu.
>> 2+3
ans =
5
>> sin(1)
ans =
0.8415
>> type sin
sin is a built-in function.
>> help sin
SIN Sine.
SIN(X) is the sine of the elements of X.
Overloaded methods
help sym/sin.m
>> V=[1 2 3 4]
V =
1 2 3 4
>> sin(V)
ans =
0.8415 0.9093 0.1411 -0.7568
>> 3*V
ans =
3 6 9 12
>> V^2
??? Error using ==> ^
Matrix must be square.
>> V.^2
ans =
1 4 9 16
>> V+2
ans =
3 4 5 6
>>
Можно обратить внимание на форму ответов при выполнении простых операций без указания переменной, которой присваивается результат. В таких случаях MATLAB сам назначает переменную ans, которой присваивается результат и значение которой затем выводится на экран.
Форма вывода и перенос строки в сессии
Следует отметить особенности вывода в системе MATLAB. Вывод начинается с новой строки, причем числовые данные выводятся с отступом, а текстовые – без него. Для экономии места в данной книге в дальнейшем вывод будет даваться без перевода на новую строку. Например, вывод вектора-строки
ans =
3 4 5 6
будет дан в виде:
ans = 3 4 5 6
Исключением является вывод векторов столбцов и матриц – тут будет сохранена более наглядная и присущая MATLAB по умолчанию форма вывода.
В некоторых случаях вводимое математическое выражение может оказаться настолько длинным, что для него не хватит одной строки. Тогда часть выражения можно перенести на новую строку с помощью знака многоточия «...» (3 или более точек), например:
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, а в m-файле – не ограничено, но со столь длинными строками работать неудобно. В ранних версиях в одной строке было не более 256 символов.
Запуск примеров применения MATLAB из командной строки
MATLAB имеет множество примеров применения, часть из которых можно запускать прямо из командной строки. Например, команда
>> bench
запускает m-файл bench.m демонстрационного примера тестирования системы.
Основные объекты MATLAB
Понятие о математическом выражении
Центральным понятием всех математических систем является математическое выражение. Оно задает то, что должно быть вычислено в численном (реже символьном) виде. Вот примеры простых математических выражений, записанных в MATLAB и в математике.
В MATLAB: В математике:
2+3; 2+3
2^3* sqrt(y)/2; 2+3*003********/2
2.301*sin(x) 2,301sin(x)
4+exp(3)/5 4+e3/5
Разница в записи вполне очевидна. В MATLAB выражения записываются
в виде одной строки и вместо разделительной запятой в числах применяется разделительная точка. Математические выражения строятся на основе чисел, констант, переменных, операторов, функций и разных спецзнаков. Ниже даются краткие пояснения сути этих понятий. Специфика MATLAB в том, что математические выражения задаются в виде одной строки. Например, 23 записывается как 2^3. Знак ; (точка с запятой) в конце строки ввода блокирует вывод результата вычислений, например:
>> 2^3;
Однако специальная переменная ans (от answer – ответ) позволяет вывести результат вычислений:
>> ans
ans = 8
Действительные и комплексные числа
Число – простейший объект языка MATLAB, представляющий количественные данные. Числа можно считать константами. Числа используются в общепринятом представлении о них. Они могут быть целыми, дробными, с фиксированной и плавающей точкой. Возможно представление чисел в хорошо известном научном формате с указанием мантиссы и порядка числа. Ниже приводятся примеры представления действительных чисел:
0
-3
2.301
123.456e-24
-234.456e10
Как нетрудно заметить, в мантиссе чисел целая часть отделяется от дробной незапятой, а точкой, как принято в большинстве языков программирования. Для отделения порядка числа от мантиссы используется символ e. Знак «плюс» у чисел не проставляется, а знак «минус» у числа называют унарным минусом. Пробелы между символами в числах не допускаются.
Числа могут быть комплексными: z=Re(x)+Im(x)*i. Такие числа содержат действительную Re(z) и мнимую Im(z) части. Мнимая часть имеет множитель i или j, означающий корень квадратный из –1:
3i
2j
2+3i
-3.141i
-123.456+2.7e-3i
Функция real(z) возвращает действительную часть комплексного числа,
Re(z), а функция imag(z) – мнимую, Im(z). Для получения модуля комплексного числа используется функция abs(z), а для вычисления фазы – angle(Z). Ниже даны простейшие примеры работы с комплексными числами:
>> i
ans = 0 + 1.0000i
>> j
ans = 0 + 1.0000i
>> z=2+3i
z = 2.0000 + 3.0000i
>> abs(z)
ans = 3.6056
>> real(z)
ans = 2
>> imag(z)
ans = 3
>> angle(z)
ans = 0.9828
Операции над числами по умолчанию выполняются в формате, который принято считать форматом с двойной точностью (правильнее сказать с двойной разрядностью).
Форматы чисел
Для установки определенного формата представления чисел используется команда
>> format name
где name – имяформата. Для иллюстрации различных форматов рассмотрим вектор, содержащий два элемента-числа: x=[4/3 1.2345e-6]
В различных форматах их представления будут иметь следующий вид:
format short 1.3333 0.0000
format short e 1.3333E+000 1.2345E-006
format long 1.333333333333338 0.000001234500000
format long e 1.333333333333338E+000 1.234500000000000E-006
formatbank 1.33 0.00
Задание формата сказывается только на форме вывода чисел. Вычисления все равно происходят в формате двойной точности, а ввод чисел возможен в любом удобном для пользователя виде.
Константы и системные переменные
Константа – это предварительно определенное числовое или символьное значение, представленное уникальным именем (идентификатором). Числа (например, 1, –2 и 1.23) являются безымянными числовыми константами.
Другие виды констант в MATLAB принято называть системными переменными, поскольку, с одной стороны, они задаются системой при ее загрузке, а с другой – могут переопределяться. Основные системные переменные, применяемые в системе MATLAB, указаны ниже:
• i или j –мнимая единица (корень квадратный из –1);
• pi – число p = 3,1415926…;
• eps – погрешность операций над числами с плавающей точкой (2–52);
• realmin – наименьшее число с плавающей точкой (2–1022);
• realmax – наибольшее число с плавающей точкой (21023)
• inf – значение машинной бесконечности;
• ans – переменная, хранящая результат последней операции и обычно вызывающая его отображение на экране дисплея;
• NaN – указание на нечисловой характер данных (Not-a-Number).
Вот примеры применения системных переменных:
>> 2*pi
ans = 6.2832
>> eps
ans = 2.2204e-016
>> realmin
ans = 2.2251e-308
>> realmax
ans = 1.7977e+308
>> 1/0
Warning: Divide by zero.
ans = Inf
>> 0/0
Warning: Divide by zero.
ans = NaN
Как отмечалось, системные переменные могут переопределяться. Можно задать системной переменной eps иное значение, например eps=0.0001. Однако важно то, что их значения по умолчанию задаются сразу после загрузки системы.Поэтому неопределенными, в отличие от обычных переменных, системные переменные не могут быть никогда.
Символьная константа – это цепочка символов, заключенных в апострофы, например:
'Hello my friend!'
'Привет'
'2+3'
Если в апострофы помещено математическое выражение, то оно не вычисляется и рассматривается просто как цепочка символов. Так что '2+3' не будет возвращать число 5. Однако с помощью специальных функций преобразования символьные выражения могут быть преобразованы в вычисляемые.
Текстовые комментарии в программах
Поскольку MATLAB используется для достаточно сложных вычислений, важное значение имеет наглядность их описания. Она достигается, в частности, с помощью текстовых комментариев. Текстовые комментарии в программах вводятся с помощью символа %, например так:
% It is factorial function
В новых версиях MATLAB отпала проблема ввода комментариев с символами кириллицы. Так что подобный комментарий также вполне приемлем:
% Это функция вычисления факториала
Обычно первые строки m-файлов служат для описания их назначения, которое выводится на экран дисплея после команды
>> help Имя_файла
Считается правилом хорошего тона вводить в m-файлы достаточно подробные текстовые комментарии. Без таких комментариев даже разработчик программных модулей быстро забывает о сути собственных решений.
Переменные и присваивание им значений
Переменные – это имеющие имена объекты, способные хранить некоторые, обычно разные по значению, данные. В зависимости от этих данных переменные могут быть числовыми или символьными, векторными или матричными. Переменные являются широко распространенными объектами в математике и программировании. На языке программирования MATLAB можно задавать переменным определенные значения. Для этого используется операция присваивания, вводимая знаком равенства:
Имя_переменной = Выражение
Типы переменных заранее не декларируются. Они определяются выражением, значение которого присваивается переменной. Так, если это выражение – вектор или матрица, то переменная будет векторной или матричной. Переменная, имеющая единственное значение, рассматривается как матрица размера 1×1.
Имя переменной (ее идентификатор) может содержать сколько угодно символов, но запоминается и идентифицируется только 31 начальный символ. Имя любой переменной не должно совпадать с именами других переменных, функций и процедур системы, то есть оно должно быть уникальным. Имя должно начинаться с буквы, может содержать буквы, цифры и символ подчеркивания _. Недопустимо включать в имена переменных пробелы и специальные знаки, например +, -, *, / и т. д., поскольку в этом случае правильная интерпретация выражений становится невозможной.