Учебное пособие: Матричная математическая система MATLAB
В большинстве математических систем вычисление sin(V) или exp(V), где V – вектор, сопровождалось бы выдачей ошибки, поскольку функции sin и exp должны иметь аргумент в виде скалярной величины. Однако MATLAB – матричная система, а вектор является разновидностью матрицы с размером 1×n или n×1. Поэтому в нашем случае результат вычислений будет вектором того же размера, что и аргумент V, но элементы возвращаемого вектора будут синусами или экспонентами от элементов вектора V.
Матрица задается в виде ряда векторов, представляющих ее строки и заключенных в квадратные скобки. Для разделения элементов векторов используется пробел или запятая, а для отделения одного вектора от другого – точка с запятой. Для выделения отдельного элемента матрицы M используется выражение вида M(j,i), где M – имя матрицы, j – номер строки и i – номер столбца.
Для просмотра содержимого массивов удобно использовать браузер рабочего пространства 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
format bank 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.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9