Смекни!
smekni.com

Система математических расчетов MATLAB (стр. 9 из 30)

Неплохой пример использования спектрального разложения дает рассмотренная выше мат-рица коэффициентов линейного дифференциального уравнения. Ввод выражения

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 -33

4 9 15

Для этой матрицы ввод [V, D] = eig(A) дает

V =

-0.4741 -0.4082 -0.4082

0.8127 0.8165 0.8165

-0.3386 -0.4082 -0.4082

D =

-1.0000 0 0

0 1.0000 0

0 0 1.0000

Здесь имеются два положительных единичных кратных собственных значений. Второй и третий столбцы матрицы V являются одинаковыми и поэтому полного набора линейно-неза-висимых собственных векторов не существует (и поэтому не существует обратная матрица V-1).

Сингулярное разложение матриц

Сингулярным значением и соответствующими сингулярными векторами прямоугольной ма-трицы A называются скаляр σ и пара векторов u и v такие, что удовлетворяются соотноше-ния

Av = σu

ATu = σ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 4

6 8

2 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 0

0 5.1883

0 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 0

0 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.1359i

MATLAB запоминает вычисленные корни как вектор-столбец. Функция 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 439

111 81 136

490 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)