b>AV = U УATU = V УПоскольку U и V являются ортогональными матрицами, это можно записать в виде сингуляр-ного разложенияA = U УVTПолное сингулярное разложение матрицы А размера mхn включает mхm матрицу U, mхn матрицу У, и nхn матрицу V. Другими словами, обе матрицы U и V являются квадратными , а матрица У имеет тот же размер, что и A. Если A имеет намного больше строк чем столб-цов, результирующая матрица U может быть достаточно большой, но большинство ее столб-цов умножаются на нули в У . В таких ситуациях может быть использована так называемая экономичная декомпозиция, которая сберегает как время так и память, за счет вывода матри-цы U размера mхn, матрицы У размера nхn и той же матрицы V.Спектральное разложение является подходящим инструментом анализа матрицы, когда пос-ледняя осуществляет преобразование векторного пространства в себя, как это было в рас-смотренном выше примере дифференциальных уравнений. С другой стороны, сингулярное разложение матриц удобно при отображении одного векторного пространства в другое, возможно с иной размерностью. Большинство систем совместных линейных уравнений отно-сятся ко второй категории. Если матрица А является квадратной, симметричной и поло-жительно-определенной, то ее спектральное и сингулярное разложения совпадают. Но при отклонении A от симметричной и положительно-определенной матрицы, разница между двумя разложениями возрастает. В частности, сингулярное разложение действительной мат-рицы всегда действительно, но спектральное разложение действительной несимметричной матрицы может быть и комплексным. Для матрицы A =9 46 82 7полное сингулярное разложение задается в форме[U,S,V] = svd(A)и приводит к следующим результатам U =-0.6105 0.7174 0.3355-0.6646 -0.2336 -0.7098-0.4308 -0.6563 0.6194 S =14.9359 00 5.18830 0 V =-0.6925 0.7214-0.7214 -0.6925Вы можете убедиться, что матрица U*S*V' равна А с точностью до ошибок округления. Для этого примера экономичная декомпозиция дает незначительный эффект.[U,S,V] = svd(A,0) U =-0.6105 0.7174-0.6646 -0.2336-0.4308 -0.6563 S =14.9359 00 5.1883 V =-0.6925 0.7214-0.7214 -0.6925Как и в первом случае, матрица U*S*V' равна A с точностью до ошибок округления.Полиномы и интерполяцияВ этом разделе мы ознакомимся с основными функциями MATLAB-а, которые дают возмож-ность осуществлять математические действия с полиномами и производить интерполяцию одно-, двух-, и многомерных данных.Полиномы и действия над ними |
Обзор полиномиальных функций | | Функция | Описание | | conv | Умножение полиномов. | | deconv | Деление полиномов. | | poly | Вычисление характеристического полинома матрицы или определение полинома с заданными корнями. | | polyder | Вычисление производных от полиномов. | | polyfit | Аппроксимация данных полиномом. | | polyval | Вычисление значений полиномов в заданных точках. | | polyvalm | Вычисление значений матричного полинома. | | residue | Разложение на простые дроби (вычисление вычетов). | | roots | Вычисление корней полинома. | | | Представление полиномовMATLAB представляет полиномы как векторы-строки, содержащие коэффициенты полино-мов по убывающим степеням. Например, рассмотрим следующее уравнениеp(x) = x3 - 2x - 5Это известный пример Валлиса (Wallis), использованный при первом представлении метода Ньютона во Французкой Академии. Мы будем использовать его в дальнейшем при рассмот-рении примеров использования различных функций. Для ввода данного полинома в MATLAB, следует записатьp = [1 0 -2 -5].Корни полиномаКорни полинома вычисляются при помощи функци roots :r = roots(p) r =2.0946-1.0473 + 1.1359i-1.0473 - 1.1359iMATLAB запоминает вычисленные корни как вектор-столбец. Функция poly выполняет об-ратную роль, то есть по заданным корням полинома вычисляет значения его коэффициентов (обратите внимание на значение второго коэффициента, который в идеале равен нулю).p2 = poly(r) p2 = 1 8.8818e-16 -2 -5 Функции poly и roots являются взаимно-обратными функциями, с точностью до упорядоче- ния коэффициентов, масштабирования и ошибок округления. Характеристические полиномы Функция poly вычисляет также коэффициенты характеристического полинома матрицы: A = [1.2 3 -0.9; 5 1.75 6; 9 0 1]; poly(A) ans = 1.0000 -3.9500 -1.8500 -163.2750 Корни данного полинома, вычисленные при помощи функции roots, являются собственными значениями (характеристическими числами) матрицы А. (При практических расчетах, для вычисления собственных значений матриц целесообразно вычислять их посредством функ-ции eig.) Вычисление значений полиномаФункция polyval вычисляет значение полинома в заданных точках. Для вычисления p в точ-ке s = 5, следует записать polyval(p,5) ans =110Можно также вычислить значение матричного полинома. Так, вместо полинома Валлиса мо-жно записать:p(X) = X3 - 2X - 5Iгде X является квадратной матрицей, а I - единичной матрицей. Например, сформируем сле-дующую квадратную матрицу X X = [2 4 5; -1 0 3; 7 1 5];и вычислим значение заданного выше полинома p(X) на данной матрице.Y = polyvalm(p, X) Y =377 179 439111 81 136490 253 639Умножение и деление полиномовДля умножения и деления полиномов предназначены соответственно функции conv и deconv. Рассмотрим полиномы a(s) = s2 + 2s + 3 и b(s) = 4s2 + 5s + 6. Для вычисления их произведения следует ввестиa = [1 2 3]; b = [4 5 6];c = conv(a,b)MATLAB возвращает c =4 13 28 27 18Для получения из с полинома b воспользуемся функцией deconv:[q, r] = deconv(c, a) q =4 5 6 r =0 0 0 0 0где r - остаток после деления (в данном случае нулевой вектор). В общем случае для поли-номов q, r , c, a в функции deconv справедливо соотношение c = conv(q, a) + r Вычисление производных от полиномовФункция polyder вычисляет производную любого полинома. Для получения производной от нашего полинома p = [1 0 -2 -5], введемq = polyder(p) q =3 0 - 2Функция polyder вычисляет также производные от произведения или частного двух полино-мов. Например, создадим два полинома a и b:a = [1 3 5]; b = [2 4 6]; Вычислим производную произведения a*b вводом функции polyder с двумя входными аргу-ментами a и b и одним выходным: c = polyder(a, b) c = 8 30 56 38 Вычислим производную от частного a/b путем ввода функции polyder с двумя выходными аргументами: [q, d] = polyder(a, b) q = -2 -8 -2 d = 4 16 40 48 36 где отношение двух полиномов q/d является результатом операции дифференцирования. Аппроксимация кривых полиномамиФункция polyfit находит коэффициенты полинома заданной степени n , который аппрокси-мирует данные (или функцию y(x)) в смысле метода наименьших квадратов:p = polyfit(x, y, n)где x и y есть векторы, содержащие данные x и y, которые нужно аппроксимировать полино-мом. Например, рассмотрим совокупность данных x-y, полученную экспериментальным пу-темx = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 498.4].Аппроксимация функциональной зависимости y(x) в виде полинома третьего порядкаp = polyfit(x,y,3)дает коэффициенты полинома p =-0.1917 31.5821 -60.3262 35.3400Рассчитаем теперь значения полинома, полученного при помощи функции polyfit, на более мелкой шкале (с шагом 0.1) и построим для сравнения графики (это делает функция plot) реальных данных и аппроксимирующей кривой.x2 = 1 : 0.1 : 5;y2 = polyval(p, x2);plot(x, y, 'o', x2, y2); grid onгде функция grid on служит для нанесения координатной сетки, а экспериментальные дан-ные на графике отмечены маркерами о..Как видно из рисунка, полином третьего порядка достаточно хорошо аппроксимирует наши данные. Разложение на простые дробиФункция residue вычисляет вычеты, полюса и многочлен целой части отношения двух поли-номов. Это особенно полезно при представлении систем управления в виде передаточных функций. Для полиномов a(s) и b(s), при отсутствии кратных корней имеем
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28
|