Описанные выше простые правила вычислений распространяются и на гораздо более сложные вычисления, которые (при использовании обычных языков программирования типа Бейсик или Паскаль) требуют составления специальных программ. MATLAB — система, специально предназначенная для проведения сложных вычислений с векторами, матрицами и массивами. При этом она по умолчанию предполагает, что каждая заданная переменная — это вектор, матрица или массив. Все определяется конкретным значением переменной. Например, если задано Х=1, то это значит, что X —это вектор с единственным элементом, имеющим значение 1. Если надо задать вектор из трех элементов, то их значения следует перечислить в квадратных скобках, разделяя пробелами. Так, например, присваивавание » V=[l 2 3]
V= 1 2 3 задает вектор V, имеющий три элемента со значениями 1, 2 и 3. После ввода вектора система выводит его на экран дисплея. Задание матрицы требует указания нескольких строк. Для разграничения строк используется знак ; (точка с запятой). Этот же знак в конце ввода предотвращает вывод матрицы или вектора (и вообще результата любой операции) на экран дисплея. Так, ввод » М=[1 2 3: 4 5 6; 7 8 9]; задает квадратную матрицу, которую можно вывести: » M M = 1 2 3
4 5 6
7 8 9 Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции, например: » V= [2+2/(3+4) exp(5) sqrt(l0)]:
» V
V =
2.2857 148.4132 3.1623 Для указания отдельного элемента вектора или матрицы используются выражения вида V(1) или M(i. j). Например, если задать » М(2. 2) arts= 5 то результат будет равен 5. Если нужно присвоить элементу M(i. j) [ В тексте программ MATLAB лучше не использовать i и j как индексы, так как i и j — обозначение квадратного корня из -1. Но можно использовать I и J. — Примеч. ред. ] новое значение х, следует использовать выражение M(ij)=x Например, если элементу М(2, 2) надо присвоить значение 10, следует записать
» М(2. 2)=10 Выражение М( i) с одним индексом дает доступ к элементам матрицы, развернутым в один столбец. Такая матрица образуется из исходной, если подряд выписать ее столбцы. Следующий пример поясняет такой доступ к элементам матрицы М: » М=[1 2 3: 4 5 6: 7 8 9]
М = 1 2 3 4 5 6 7 8 9
» М(2) ans = 4 » M(8)
ans = 6 » M(9)
ans = 9 » М(5)=100;
» М
М = 1 2 3 4 100 6 7 8 9 Возможно задание векторов и матриц с комплексными элементами, например: » i=sqrt(-l): » СМ =[1 2: 3 4] + i*[5 6: 7 8] или » СМ - [1+5*1 2+6*1: 3+7*1 4+8*1] Это создает матрицу: CM= 1.0000 + 5.00001 2.0000 + 6.00001
3.0000 + 7.00001 4.0000 + 8.00001 Наряду с операциями над отдельными элементами матриц и векторов система позволяет производить операции умножения, деления и возведения в степень сразу над всеми элементами, т. е. над массивами. Для этого перед знаком операции ставится точка. Например, оператор * означает умножение для векторов или матриц, а оператор .* —поэлементное умножение всех элементов массива. Так, если М — матрица, то М.*2 даст матрицу, все элементы которой умножены на скаляр — число 2. Впрочем, для умножения матрицы,на скаляр оба выражения — М*2 и М.*2 — оказываются эквивалентными. Имеется также ряд особых функций для задания векторов и матриц. Например, функция magic(n) задает магическую матрицу размера пхп, у которой сумма всех столбцов, всех строк и даже диагоналей равна одному и тому же числу: » M=magic(4)
М =
» sum(M)
ans= 34 34 34 34
» sum(M')
ans= 34 34 34 34
» sum(diag(M))
ans= 34
» M(1.2)+M(2.2)+M(3.2)+M(4.2) ans= 34
Уже сама по себе возможность создания такой матрицы с помощью простой функции magic заинтересует любителей математики. Но векторных и матричных функций в системе множество, и мы их детально рассмотрим в дальнейшем. Напомним, что для стирания переменных из рабочей области памяти служит команда clear.
Объединение малых матриц в большую
Описанный способ задания матриц позволяет выполнить операцию конкатенации — объединения малых матриц в большую. Например, создадим вначале магическую матрицу размера 3x3: » A=magic(3) А=
Теперь можно построить матрицу, содержащую четыре матрицы: » В-[А А+16:А+32 А+16]
В =
Полученная матрица имеет уже размер 6x6. Вычислим сумму ее столбцов: » sum(B)
ans = 126 126 126 126 126 126 Любопытно, что она одинакова для всех столбцов. А для вычисления суммы стро! используем команду » sum(B.')
ans = 78 78 78 174 174 174 Здесь запись В.' означает транспонирование матрицы В, т. е. замену строк столб цами. На этот раз сумма оказалась разной. Это отвергает изначально возникши предположение, что матрица В тоже является магической. Для истинно магической матрицы суммы столбцов и строк должны быть одинаковыми: » D=magic(6) D=
» sum(D) ans= 111 111 111 111 111 111
» sum(D.')
ans= 111 111 111 111 111 111 Более того, для магической матрицы одинаковой является и сумма элементов по основным диагоналям (главной диагонали и главной антидиагонали).
Удаление столбцов и строк матриц
Для формирования матриц и выполнения ряда матричных операций возникает необходимость удаления отдельных столбцов и строк матрицы. Для этого используются пустые квадратные скобки [ ]. Проделаем это с матрицей М: » М=[1 2 3; 4 5 6; 7 8 9] М =
Удалим второй столбец используя оператор : (двоеточие):
» М(:.2)=[ ] 1 3
4 6
7 9
А теперь, используя оператор : (двоеточие), удалим вторую строку: » М(2.:)=[ ] М = 1 3