Система математических расчетов MATLAB — страница 3
Обновлено
Данные могут быть аппроксимированы при помощи убывающей экспоненциальной функ-ции.
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 | Вычисление корней полинома. |
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 | Интерполяция кубическим сплайном. |
