|
Система математических расчетов MATLAB
ба этих примера имеют точное решение в виде целых чисел. Это связано с тем, что в каче-стве матрицы коэффициентов была выбрана матрица Паскаля pascal(3), чей детерминант равен единице. Далее будут рассмотрены примеры влияния ошибок округления, возникаю-щих в более реальных системах. Квадратная матрица A является сингулярной, если ее столбцы не являются линейно незави-симыми. Если A - сингулярна, то решение AX = B или не существует, или не является един-ственным. Оператор \ , A\B, выдает предупреждающее сообщение, если матрица A близка к сингулярной и сообщение об ошибке, если определено равенство нулю детерминанта матри-цы А.Переопределенные системыПереопределенные системы совместных линейных уравнений часто встречаются в задачах аппроксимации экспериментальных данных при помощи различных эмпирических кривых. Рассмотрим следующий гипотетический пример. Величина y измеряется при различных зна-чениях времени t, что дает следующие результатыt y0.0 0.820.3 0.720.8 0.631.1 0.601.6 0.552.3 0.50Эти данные могут быть введены в MATLAB при помощи выражений:t = [0 .3 .8 1.1 1.6 2.3]';y = [0.82 0.72 0.63 0.60 0.55 0.50]';Данные могут быть аппроксимированы при помощи убывающей экспоненциальной функ-ции. y(t) = c1 + c2 e-t Это уравнение показывает, что вектор y может быть представлен в виде линейной комбина-ции двух векторов, один из которых является постоянным вектором, содержащим все едини-цы, а второй вектор имеет компоненты e-t. Неизвестные коэффициенты c1 и c2 могут быть найдены подгонкой кривых по методу наименьших квадратов, которая основана на миними-зации суммы квадратов отклонений экспериментальных данных от модели. Мы имеем шесть уравнений с двумя неизвестными, представленными 6х2 матрицей E = [ones(size(t)) exp(-t)] E = 1.0000 1.0000 1.0000 0.7408 1.0000 0.4493 1.0000 0.3329 1.0000 0.2019 1.0000 0.1003 Решение методом наименьших квадратов находится при помощи оператора \ : c = E\y c = 0.4760 0.3413 Иными словами, подгонка методом наименьших квадратов дает y(t) = 0.476 + 0.3413 e-t Следующие выражения оценивают модель при равномерно распределенных моментах време-ни (с шагом 0.1), а затем строят график вместе с результатами экспериментальных данных. T = (0 : 0.1 : 2.5)'; Y = [ones(size(T)) exp(-T)]*c; plot(T, Y, '-', t, y, 'o')
Можно видеть, что значения E*c не совсем точно совпадают со значениями эксперименталь-ных данных y, но эти отклонения могут быть сравнимы с ошибками измерений. Прямоугольная матрица A называется матрицей неполного ранга, если ее столбцы линейно-независимы. Если матрица A имеет неполный ранг, то решение AX = B не является единст-венным. Оператор \ при этом выдает предупреждающее сообщение и определяет основное решение, которое дает минимально возможное число ненулевых решений. Недоопределенные системыНедоопределенные системы линейных уравнений содержат больше неизвестных чем урав-нений. Когда они сопровождаются дополнительными ограничениями, то становятся сферой изучения линейного программирования. Сам по себе, оператор \ работает только с системой без ограничений. При этом решение никогда не бывает единственным. MATLAB находит ос-новное решение, которое содержит по меньшей мере m ненулевых компонент (где m - число уравнений), но даже это решение может быть не единственным. Ниже приводится пример, где исходные данные генерируются случайным образом.R = fix (10*rand(2,4)) R =6 8 7 33 5 4 1b = fix (10*rand(2,1)) b =12Система уравнений Rx = b содержит два уравнения с четырьмя неизвестными. Поскольку матрица коэффициентов R содержит небольшие по величине целые числа, целесообразно представить решение в формате rational (в виде отношения двух целых чисел). Частное ре-шение представленное в указанном формате есть:p = R\b p =05/70-11/7Одно из ненулевых решений есть p(2), потому что второй столбец матрицы R имеет наи-большую норму. Вторая ненулевая компонента есть p(4) поскольку четвертый столбец матрицы R становится доминирующим после исключение второго столбца (решение нахо-дится методом QR-факторизации с выбором опорного столбца).Обратные матрицы и детерминантыЕсли матрица А является квадратной и невырожденной, уравнения AX = I и XA = I имеют одинаковое решение X. Это решение называется матрицей обратной к A, обозначается через A-1 и вычисляется при помощи функции inv. Понятие детерминанта (определителя) матрицы полезно при теоретических выкладках и некоторых типах символьных вычислений, но его масштабирование и неизбежные ошибки округления делают его не столь привлекательным при числовых вычислениях. Тем не менее, если это требуется, функция det вычисляет определитель квадратной матрицы. Например,A = pascal (3) A =1 1 11 2 31 3 6d = det (A)X = inv (A) d =1 X =3 -3 1-3 5 -21 -2 1Опять таки, поскольку A является симметричной матрицей целых чисел и имеет единичный определитель, то же самое справедливо и для обратной матрицы. С другой стороны, дляB = magic(3) B =8 1 63 5 74 9 2d = det(B)X = inv(B) d =-360 X =0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056-0.0194 0.1889 -0.1028Внимательное изучение элементов матрицы X, или использование формата rational , показы-вает, что они являются целыми числами, разделенными на 360.Если матрица A является квадратной и несингулярной, то, пренебрегая ошибками округле-ния, выражение X = inv(A)*B теоретически означает то же, что и X = A\B , а Y = B*inv(A) теоретически есть то же, что и Y = B/A. Однако вычисления включающие операторы \ и / более предпочтительны, поскольку требуют меньше рабочего времени, меньшей памяти и имеют лучшие свойства с точки зрения определения ошибок.Псевдообратные матрицыПрямоугольные матрицы не имеют детерминантов и обратных матриц. Для таких матриц по крайней мере одно из уравнений AX = I или XA = I не имеет решения. Частично данный про-бел восполняется так называемой псевдообратной матрицей Мура-Пенроуза, или просто псевдообратной матрицей, которая вычисляется при помощи функции pinv. На практике необходимость в этой операции встречается довольно редко. Желающие могут всегда обра-титься к соответствующим справочным пособиям. Степени матриц и матричные экспонентыПоложительные целые степениЕсли А есть некоторая квадратная матрица, а р - положительное целое число, то A^p эквива-лентно умножению A на себя р раз.X = A^2 X =3 6 106 14 2510 25 46Отрицательные и дробные степениЕсли А является квадратной и невырожденной, то A^(-p) эквивалентно умножению inv(A) на себя p раз.Y = B^(-3) Y =0.0053 -0.0068 0.0018-0.0034 0.0001 0.0036-0.0016 0.0070 -0.0051Дробные степени, например A^(2/3), также допускаются; результаты при этом зависят от ра-спределения собственных значений матрицы А.Поэлементное возведение в степеньОператор .^ (с точкой !) осуществляет поэлементное возведение в степень. Например, X = A.^2 A =1 1 11 4 91 9 36Вычисление корня квадратного из матрицы и матричной экспонентыДля невырожденных квадратных матриц А функция sqrtm вычисляет главное значение квад-ратного корня , т.е. если X = sqrtm(A) , то X*X = A . Буква m в sqrtm означает, что выпол-няется матричная операция. Это отличает данную функцию от sqrt(A), которая, подобно A.^(1/2) (обратите внимание на точку !), выполняет операцию извленчения корня поэлемен-тно. Система обыкновенных линейных дифференциальных уравнений первого порядка может быть записана в видеdx/dt = Axгде x = x(t) есть векторная функция от t, а A есть постоянная матрица не зависящая от t.Решение данной системы может быть выражено в виде матричной экспоненты.x(t) = ?Atx(0)Функция expm(A) вычисляет матричную экспоненту. Рассмотрим пример системы диффере-нциальных уравнений со следующей 3х3 матрицей коэффициентов A =0 -6 -16 2 -16-5 20 -10и начальными условиями x(0)x0 = [ 1 1 1]'.Использование матричной экспоненты для вычисления решения дифференциального уравне-ния в 101 точке с шагом 0.01 на интервале 0 ? t ? 1 записывается в виде X = [ ];for t = 0 : 0.01 : 1 X = [X expm(t*A)*x0]; endТрехмерный график решения в фазовом пространстве может быть получен при помощи спе-циальной функции plot3(X(1,:), X(2,:), X(3,:), '-o') Решение имеет вид спиральной функции сходящейся к началу координат (см. рис. ниже). Та-кое решение обусловлено комплексными собственными значениями матрицы коэффициен-тов А. Собственные значения и собственные векторыСобственным значением и собственным вектором квадратной матрицы А называются ска-ляр л и вектор v, удовлетворяющие условиюAv = лvДиагональная декомпозицияИмея диагональную матрицу Л, составленную из собственных значений л матрицы А и мат-рицу V , составленную из соответствующих собственных векторов v, можно записатьAV = VЛЕсли матрица V несингулярная, на основании данного выражения получаем спектральное разложение матрицы АА = VЛV-1Неплохой пример использования спектрального разложения дает рассмотренная выше мат-рица коэффициентов линейного дифференциального уравнения. Ввод выражения lambda = eig(A) дает следующий вектор-столбец собственных значений (два из них являются комплексно-сопряженными) lambda = -3.0710 -2.4645 + 17.6008i -2.4645 - 17.6008i Действительные части всех собственных значения являются отрицательными, что обеспечи-вает устойчивость процессов в системе. Ненулевые мнимые части комплексно-сопряженных собственных значений обуславливают колебательный характер переходных процессов. При двух выходных аргументах, функция eig вычисляет также собственные векторы и выда-ет собственные значения в виде диагональной матрицы . [V,D] = eig(A) V = -0.8326 0.2003 - 0.1394i 0.2003 + 0.1394i -0.3553 -0.2110 - 0.6447i -0.2110 + 0.6447i -0.4248 -0.6930 -0.6930 D = -3.0710 0 0 0 -2.4645+17.6008i 0 0 0 -2.4645-17.6008i Первый собственный вектор (первый столбец матрицы V) является действительным, а два других являются комплексно-сопряженными. Все три вектора являются нормализованными по длине, т.е. их Евклидова норма norm(v,2), равна единице. Матрица V*D*inv(V), которая в более сжатой форме может быть записана как V*D/V, равна, в пределах погрешностей округления, матрице А. Аналогично, inv(V)*A*V, или V\A*V, рав-на, в пределах погрешностей округления, матрице D. Дефектные матрицыНекоторые матрицы не имеют спектрального разложения. Такие матрицы называются дефек-тными или не диагонализируемыми. Например, пусть матрица А имеет вид A =6 12 19-9 -20 -334 9 15Для этой матрицы ввод [V, D] = eig(A) дает V =-0.4741 -0.4082 -0.40820.8127 0.8165 0.8165-0.3386 -0.4082 -0.4082 D =-1.0000 0 00 1.0000 00 0 1.0000Здесь имеются два положительных единичных кратных собственных значений. Второй и третий столбцы матрицы V являются одинаковыми и поэтому полного набора линейно-неза-висимых собственных векторов не существует (и поэтому не существует обратная матрица V-1).Сингулярное разложение матрицСингулярным значением и соответствующими сингулярными векторами прямоугольной ма-трицы A называются скаляр у и пара векторов u и v такие, что удовлетворяются соотноше-нияAv = уuATu = уv Имея диагональную матрицу сингулярных чисел У и две ортогональные матрицы U и V, сформированные из соответствующих собственных векторов, можно записать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), при отсутствии кратных корней имеемгде r есть вектор-столбец вычетов, p есть вектор-столбец полюсов, а k есть вектор-строка це-лой части дробно-рациональной функции. Рассмотрим передаточную функциюДля полиномов числителя и знаменателя этой функции имеем: b = [-4 8]; a = [1 6 8]. Введя [r, p, k] = residue(b, a) получим r = -12 8 p = -4 -2 k = [ ] Функция residue с тремя входными (r, p, и k) и двумя выходными (b2, a2) аргументами вы-полняет обратную функцию свертки имеющегося разложения на простые дроби, в дробно-рациональную функцию отношения двух полиномов. [b2, a2] = residue(r, p, k) b2 = -4 8 a2 = 1 6 8 т.е. из данных предыдущего примера мы восстановили исходную передаточную функцию. В случае кратных корней процедура несколько усложняется, но остается разрешимой. ИнтерполяцияИнтерполяция является процессом вычисления (оценки) промежуточных значений функций, которые находятся между известными или заданными точками. Она имеет важное приме-нение в таких областях как теория сигналов, обработка изображений и других. MATLAB обеспечивает ряд интерполяционных методик, которые позволяют находить компромисс ме-жду точностью представления интерполируемых данных и скоростью вычислений и исполь-зуемой памятью. |
Обзор функций интерполяции | | Функции | Описание | | griddata | Двумерная интерполяция на неравномерной сетке. | | griddata3 | Трехмерная интерполяция на неравномерной сетке. | | griddatan | Многомерная интерполяция (n >= 3). | | interp1 | Одномерная табличная интерполяция. | | interp2 | Двухмерная табличная интерполяция. | | interp3 | Трехмерная табличная интерполяция. | | interpft | Одномерная интерполяция с использованием быстрого преобразования Фурье. | | interpn | Многомерная табличная интерполяция. | | pchip | Кубическая интерполяция при помощи полинома Эрмита. | | spline | Интерполяция кубическим сплайном. | | | Одномерная интерполяцияДвумя основными типами одномерной интерполяции в MATLAB-е являются полиномиаль-ная интерполяция и интерполяция на основе быстрого преобразования Фурье.1. Полиномиальная интерполяцияФункция interp1 осуществляет одномерную интерполяцию - важную операцию в области анализа данных и аппроксимации кривых. Эта функция использует полиномиальные методы, аппроксимируя имеющийся массив данных полиномиальными функциями и вычисляя соот-ветствующие функции на заданных (желаемых) точках. В наиболее общей форме эта функ-ция имеет видyi = interp1(x, y, xi, method)где y есть вектор, содержащий значения функции; x - вектор такой же длины, содержащий те точки (значения аргумента), в которых заданы значения y; вектор xi содержит те точки, в ко-торых мы хотим найти значения вектора y путем интерполяции; method - дополнительная строка, задающая метод интерполяции. Имеются следующие возможности для выбора мето-да: * Ступенчатая интерполяция (method = 'nearest'). Этот метод приравнивает значение функ-ции в интерполируемой точке к ее значению в ближайшей существующей точке имеющихся данных. * Линейная интерполяция (method = 'linear'). Этот метод аппроксимирует функцию между любыми двумя существующими соседними значениями как линейную функцию, и возвр-ащает соответствующее значение для точки в xi (метод используется по умолчанию). * Интерполяция кубическими сплайнами (method = 'spline'). Этот метод аппроксимирует ин-терполируемую функцию между любыми двумя соседними значениями при помощи куби-ческих функций, и использует сплайны для осуществления интерполяции. * Кубическая интерполяция (method = 'pchip' или 'cubic'). Эти методы идентичны. Они ис-пользуют кусочную кубическую Эрмитову аппроксимацию и сохраняют монотонность и форму данных.Если какой-либо из элементов вектора xi находится вне интервала, заданного вектором x, то выбранный метод интерполяции используется также и для экстраполяции. Как альтернатива, функция yi = interp1(x, y, xi, method, extrapval) заменяет экстраполированные значения теми, которые заданы вектором extrapval. Для последнего часто используется нечисловое значение NaN.Все методы работают на неравномерной сетке значений вектора x .Рассмотрение скорости, требуемой памяти и гладкости методов. При выборе метода ин-терполяции всегда нужно помнить, что некоторые из них требуют большего объема памяти или выполняются быстрее, чем другие. Однако, вам может потребоваться использование лю-бого из этих методов, чтобы достичь нужной степени точности интерполяции (гладкости результатов). При этом нужно исходить из следующих критериев. * Метод ступенчатой аппроксимации является самым быстрым, однако он дает наихудшие результаты с точки зрения гладкости. * Линейная интерполяция использует больше памяти чем ступенчатая и требует несколько большего времени исполнения. В отличие от ступенчатой аппроксимации, результирующая функция является непрерывной, но ее наклон меняется в значениях исходной сетки (исход-ных данных). * Кубическая интерполяция сплайнами требует наибольшего времени исполнения, хотя тре-бует меньших объемов памяти чем кубическая интерполяция. Она дает самый гладкий ре-зультат из всех других методов, однако вы можете получить неожиданные результаты, если входные данные распределены неравномерно и некоторые точки слишком близки. * Кубическая интерполяция требует большей памяти и времени исполнения чем ступенчатая или линейная. Однако в данном случае как интерполируемые данные, так и их производные являются непрерывными.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
|
|