Э. А. Романовский теория автоматического
Скачать 0.67 Mb.
|
1.1.2. Работа с векторами и матрицами В среде MATLAB производить вычисления с наборами вещест- венных и комплексных чисел (векторами, матрицами и прочими мас- сивами) также легко, как и с одиночными числами. Эта особенность является одним из самых заметных и важных преимуществ среды MATLAB по сравнению с другими средами, ориентированными на компьютерное моделирование. Простейшими наборами вещественных и комплексных чисел в среде являются векторы-строки и векторы-столбцы. Оба набора пред- - 11 - ставляют собой одномерные числовые массивы. При создании вектора-строки используется конструкция, демон- стрируемая следующим примером: » a1 = [1.1, 2.2, 3.3] a1 = 1.1000 2.2000 3.3000 В подобных конструкциях вместо запятых разрешается использо- вать пробелы. Однако рекомендуется всё же здесь применять именно запятые по причине большей наглядности. Так, например, в случае создания вектора-строки, в котором среди чисел встречаются ком- плексные числа, более читабельной будет конструкция, в которой в ка- честве разделителей между числами используются запятые. Пример: » a2 = [1.1 + 2.2i, 22.2, 3.3 – 7i]; Кроме того, далеко не везде в командах и текстах программ, где требуется применение запятых, разрешается вместо них использовать пробелы. При создании вектора-столбца используется конструкция, демон- стрируемая следующим примером: » a3 = [3.3; 2.2; 1.1] a3 = 3.3000 2.2000 1.1000 Для доступа к отдельному элементу одномерного массива приме- няют операцию индексации, для чего после имени массива в круглых скобках указывается индекс (номер) элемента. Нумерация элементов массива начинается с единицы, а не с нуля. Пример: » a2(3) ans = 3.3000 - 7.0000i » a3(1) - 12 - ans = 3.3000 В примере ans – это специальная переменная среды MATLAB. Она всегда хранит результат выполнения последней введённой поль- зователем команды. Её содержимое часто выводится на экран в каче- стве результата выполнения какой-либо команды. Количество элементов одномерного массива всегда можно узнать при помощи функции length() При создании матрицы можно использовать конструкцию, демон- стрируемую следующим примером (однако это не единственный спо- соб создания полноценной матрицы): » A1 = [1, 2, 3; 9, 8, 7; 6, 5, 4] A1 = 1 2 3 9 8 7 6 5 4 Матрицы представляют собой двухмерные числовые массивы. Как видно из примера, при формировании матриц запятая означа- ет переход к следующему элементу строки создаваемой матрицы, а точка с запятой означает переход на следующую строку этой матрицы. Для доступа к отдельному элементу матрицы также применяют операцию индексации. Одним из вариантов доступа является указание после имени матрицы в круглых скобках через запятую двух индексов, первый из которых является номером строки, а второй – номером столбца. Здесь нумерация также начинается с единицы. Пример: » A1(2, 3) ans = 7 Для определения размеров матрицы по каждой размерности можно использовать функцию size() . Она возвращает вектор-строку из двух чисел, содержащих количество строк (первое число) и количест- во столбцов (второе число) интересующей матрицы. Над числами, числовыми векторам и матрицами можно выпол- нять разнообразные операции. Ниже приведены некоторые из этих - 13 - операций: 1. « + » - сложение чисел, векторов и матриц. 2. « - » - вычитание чисел, векторов и матриц. 3. « * » - перемножение чисел, векторов и матриц. 4. « / » - деление чисел, векторов и матриц (матрицу на матрицу, разумеется, делить нельзя, однако можно разделить матрицу на число). 5. « ' » - транспонирование векторов и матриц. 6. « \ » - решение систем линейных алгебраических уравнений. 7. « ^ » - возведение чисел и матриц в степень. Ниже приводятся примеры выполнения некоторых из этих опера- ций над векторами и матрицами (с подавлением вывода результатов выполнения команд). » A1 = [1, 2, 3; 9, 8, 7]; » A2 = [9, 8, 7; 1, 2, 3]; » A3 = A1 + A2; » A4 = [1, 2; 9, 8; 3, 5]; » A5 = A4 * A1; » A6 = A2'; Ниже приведён пример решения системы линейных алгебраиче- ских уравнений 0 = + B Ax (также с подавлением вывода результатов ). » A = [1, -2, -3; 9, 8, 2; -4, 5, 6]; » B = [2; 3; 1]; » x = A\B; % Решение » C = A*x; % Проверка решения : C должно % равняться B. Разумеется , для обработки матриц существует большое количест - во самых разных функций Ниже приводятся примеры вызова только некоторых из этих функций с поясняющими комментариями » A = zeros(2, 3); % Создание матрицы нулей % размерами 2 x 3. » B = ones(3, 2); % Создание матрицы единиц % размерами 3 x 2. » I = eye(3); % Создание единичной матрицы 3 x 3. » C = rand(3, 3); % Создание матрицы из % случайных чисел со значениями % в диапазоне от 0 до 1. » d = det(C); % Вычисление определителя % матрицы C. » r = rank(C); % Вычисление ранга матрицы C. - 14 - » D = inv(C); % Вычисление матрицы , обратной % к матрице C. » p = eig(C); % Вычисление собственных чисел % матрицы C. 1.1.3. Работа с полиномами Среда MATLAB имеет встроенные средства для работы с поли- номами. Полином представляет собой степенную функцию вида 0 1 1 1 ) ( a p a p a p a p F n n n n + + + + = − − K Здесь p - это некоторая независимая переменная ; i a - числовые коэффициенты , где n i , 1 = Если степенную функцию ) ( p F приравнять нулю , то получится степенное уравнение 0 0 1 1 1 = + + + + − − a p a p a p a n n n n K Это уравнение можно решить Количество его решений всегда равно n , а сами эти решения i p ( n i , 1 = ) называются корнями поли - нома ) ( p F В среде MATLAB полиномы хранятся в виде векторов - строк , в которых содержатся коэффициенты полином в порядке убывания их индексов Например , для полинома 4 5 3 2 ) ( 2 4 1 + + + = p p p p P соответствующая вектор - строка будет выглядеть так : » P1 = [2, 0, 3, 5, 4]; Для работы с полиномами в среде MATLAB также существует ряд функций Ниже приводятся примеры вызова некоторых из этих функций с поясняющими комментариями : » Y = polyval(P1, X); % Вычисление полинома при % заданном значении % независимой переменной » P3 = conv(P1, P2); % Вычисление произведения % двух полиномов » [Y1, Y2] = deconv(P1, P2); % Деление двух полиномов » DP = polyder(P1); % Вычисление производной % полинома » R1 = roots(P1); % Вычисление корней % полинома - 15 - » P1 = poly(R1); % Вычисление коэффициентов % полинома по его % заданным корням » F1 = poly(A1); % Вычисление коэффициентов % характеристического % полинома матрицы В примерах функция деления полиномов возвращает два вектора- строки. Первый вектор-строка Y1 содержит частное от деления, а вто- рой вектор-строка Y2 содержит остаток от деления. Функция poly() может вызываться двумя способами. Если её аргументом является вектор-строка, то она рассматривает её элементы, как корни полинома, коэффициенты которого следует определить. Ес- ли же её аргументом является квадратная матрица, то она определяет коэффициенты характеристического полинома этой матрицы. Харак- теристическим полиномом некоторой квадратной матрицы является полином, для которого справедливо равенство: ) det( ) ( A pI p F − = , где I – единичная матрица с размерами матрицы A . 1.2. З АДАНИЯ 1. В таблице Табл. 1.1 по вариантам приведены две квадратные матрицы 1 A и 2 A Следует создать их в командном окне среды MATLAB и выполнить над ними операции сложения , вычитания , пе - ремножения , транспонирования , деления на число , возведения в сте - пень числа 2. В таблице Табл . 1.1 также приведена матрица B . Средствами среды решить линейные матричные уравнения 0 1 = + B A x и 0 2 = + B A x 3. Для заданных матриц 1 A и 2 A средствами среды MATLAB найти их определители , ранги , обратные матрицы , а также их собст - венные числа 4. В таблице Табл . 1.1 также приведены два полинома 1 P и 2 P . Средствами среды MATLAB вычислить значения полиномов , подста - вив значение x , равное 1; вычислить произведение полиномов 1 P и 2 P ; разделить полином 1 P на полином 2 P ; вычислить производные поли - номов 1 P и 2 P ; вычислить корни полиномов 1 P и 2 P ; по найденным корням вычислить коэффициенты полиномов , сравнить эти коэффици - енты с коэффициентами полиномов 1 P и 2 P ; вычислить коэффициенты - 16 - характеристических полиномов матриц 1 A и 2 A Табл. 1.1. Варианты заданий. № 1 A 2 A B 1 P 2 P 1 3 6 5 8 2 7 4 6 1 − 3 6 5 8 2 7 4 6 1 2 4 3 1 5 4 2 2 4 + + + + p p p 5 2 4 3 2 5 + + + − p p p 2 − 3 6 5 0 2 7 4 5 10 1 2 5 8 20 7 4 4 1 2 2 1 1 5 2 2 2 3 + + + + p p p p p p 5 4 2 2 4 + + + 3 − − 3 6 5 1 2 7 4 6 1 − 3 6 5 1 2 5 4 6 1 − 2 4 3 1 5 4 2 2 4 + − − − p p p p p p 5 2 2 2 5 + + − 4 − 3 8 5 8 1 7 4 6 1 − − 3 6 5 8 2 7 4 6 0 − 2 4 3 p p p 5 10 2 2 3 + + + 1 5 3 3 4 + + + + p p p 5 − 3 6 5 8 0 7 4 6 1 − 3 6 1 8 2 7 2 6 1 − 2 4 3 10 4 2 2 4 + − − + p p p 3 3 2 4 + + + + − p p p 6 − 3 6 5 2 1 7 3 6 1 − 3 7 5 8 10 7 4 6 1 − 1 5 3 1 5 4 2 2 4 + + + + p p p 1 5 4 2 2 4 + + + + p p p 7 − 3 6 3 8 1 7 2 6 1 3 6 5 8 2 17 4 6 1 − 2 3 3 5 1 9 2 2 4 + − − + p p p 1 3 2 4 + − − + p p p - 17 - 8 − 3 2 5 3 1 7 4 1 1 3 2 5 0 2 17 4 6 1 − − 1 4 2 3 35 2 3 + + + − p p p 1 5 4 3 2 4 − − − − p p p 9 − 3 26 5 4 2 7 4 6 1 − 3 3 5 1 2 2 4 6 1 − 2 2 1 1 2 2 3 + − − + − p p p 1 40 3 2 4 + + + + p p p 10 − 3 6 50 8 2 10 4 6 1 − 3 2 5 8 1 7 4 6 1 2 2 3 10 2 2 4 + + + + p p p 1 7 4 10 3 5 − + + − p p p 11 − − 3 6 5 8 2 7 4 6 1 − 3 6 5 8 2 7 4 6 1 − 2 4 3 1 5 4 2 2 4 + − − − p p p 5 2 4 3 2 5 + − − + p p p 12 − 3 6 5 0 2 7 4 5 10 − − 1 2 5 8 20 7 4 4 1 − − 2 2 1 1 5 2 2 2 3 + − − − p p p p p p 5 4 2 2 4 − − − 13 − 3 6 5 1 2 7 4 6 1 − − 3 6 5 1 2 5 4 6 1 − − 2 4 3 1 5 4 2 2 4 − − − + p p p p p p 5 2 2 2 5 − − + 14 − 3 8 5 8 1 7 4 6 1 − − 3 7 5 8 2 7 4 6 0 − − 2 4 3 p p p 5 10 2 2 3 + + − 1 5 3 3 4 − − − + p p p 15 − − 3 6 5 8 0 7 4 6 1 − − 3 6 1 8 2 7 2 6 1 − − 2 4 3 10 4 2 2 4 + − − + − p p p 3 3 2 4 − + + − − p p p - 18 - 16 − − 3 6 5 2 1 7 3 6 1 − 3 7 5 8 10 7 4 6 1 − − 1 5 3 1 5 4 2 2 4 + − − − p p p 1 2 3 2 2 4 + − − + p p p 17 − − 3 6 3 8 1 7 2 6 1 − 3 6 5 8 2 17 4 6 1 − − 2 3 3 5 1 9 2 2 4 − + + − p p p 1 3 2 4 + + + − p p p 18 − − 3 2 5 3 1 7 4 1 1 − 3 2 5 0 2 17 4 6 1 − − 1 3 2 2 35 2 3 + − − − p p p 1 65 4 3 2 4 − + + − p p p 19 − − 3 26 5 4 2 7 4 6 1 − − 3 3 5 1 2 2 4 6 1 − − 2 2 1 1 2 3 2 3 + + + + − p p p 2 40 3 2 4 − + + − p p p 20 − 3 5 22 8 2 10 4 6 5 − − 3 2 5 8 1 7 4 6 1 − 2 2 3 10 2 2 2 4 − − − + p p p 1 7 4 10 3 5 + − − − p p p 21 − − 3 6 5 8 2 7 4 6 1 − − 3 6 5 8 2 7 4 6 1 − − 2 3 3 1 5 4 2 2 4 + − − + − p p p 5 2 3 3 2 5 + − − − p p p 22 − 3 6 5 0 2 8 4 5 10 − − 1 3 5 8 20 7 4 3 1 − − 2 4 1 1 5 2 2 2 3 + + + − − p p p p p p 5 4 2 2 4 + + − − 23 − − 3 6 5 1 2 7 4 6 1 − 3 6 6 1 2 5 4 6 1 − 2 5 3 1 5 3 2 2 4 + − − + − p p p p p p 5 4 2 2 5 − − + − - 19 - 24 − − 3 8 5 8 1 8 4 6 1 − 3 9 5 8 2 7 4 6 0 − − 1 8 3 p p p 5 10 3 2 3 + + − − 1 5 3 3 4 + − − + − p p p 25 − 4 16 5 8 0 7 4 6 1 − 3 12 1 8 2 7 2 6 1 − 3 4 3 2 2 4 5 2 4 + + + + − p p p 3 2 2 2 4 − + + − − p p p 26 − 3 13 5 2 2 7 3 6 1 − 3 7 5 8 13 7 4 3 1 − − 4 3 3 1 5 4 6 2 4 + − − − − p p p 1 2 3 2 2 4 + − − − p p p 27 − − 3 0 3 8 1 7 2 8 1 − − 3 6 5 8 2 27 4 6 1 − − 1 5 3 5 2 19 2 2 4 − + + − p p p 1 3 2 4 + + + − − p p p 28 − − 3 2 5 5 1 7 4 3 1 − 3 2 8 0 2 27 4 6 1 − − 1 9 2 2 35 3 2 3 + − − + − p p p 1 25 4 3 2 4 − + + − p p p 29 − − 3 36 5 4 6 7 4 9 1 − − 3 31 5 1 4 2 4 6 1 − − 2 4 1 1 2 6 2 3 − + + + − p p p 2 45 3 2 4 + + + − p p p 30 − 3 5 23 8 9 11 4 6 8 − − 3 2 5 7 12 7 4 6 1 − 2 12 3 10 9 2 2 2 4 − − − + p p p 1 7 3 12 3 5 + − − − p p p |