MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

MATLAB\MATLAB

В.Г.Потемкин "Справочник по MATLAB"
Линейная алгебра

  В оглавление книги \ К следующему разделу \ К предыдущему разделу

Вычисление собственных значений и сингулярных чисел

SVD
Cингулярное разложение матрицы

Синтаксис:

            s = svd(A)
            [U, S, V] = svd(A)
            [U, S, V] = svd(A, 0)

Описание:

Если A - действительная матрица размера m х n (m >= n), то ее можно представить в виде [1]:

            A = U * S * VT,

где UTU = V * VT = In и S = diag(s1, ...sn).

Такое разложение называется сингулярным разложением матрицы A.

Матрица U сформирована из n ортонормированных собственных векторов, соответствующих n наибольшим собственным значениям матрицы AAT, а матрица V - из ортонормированных собственных векторов матрицы ATA. Диагональные элементы матрицы S - неотрицательные значения квадратных корней из собственных значений матрицы ATA; они называются сингулярными числами.

Допустим, что s1>= s2 >=... >= sn >= 0. Если ранг матрицы A равен r, то значения sr+1 = sr+2 = ... = sn = 0.

Существует другое, более экономное сингулярное разложение:

            A = Ur * Sr * VrT,

где UrTUr = Vr * VrT = Ir и Sr = diag(s1, ..., sr).

Функция s = svd(A) вычисляет только сингулярные числа матрицы A.

Функция [U, S, V] = svd(A) вычисляет диагональную матрицу S тех же размеров, которые имеет и матрица A с неотрицательными диагональными элементами в порядке их убывания, а также унитарные матрицы преобразований U и V.

Функция [U, S, V] = svd(A, 0) выполняет экономное сингулярное разложение.

Пример 1: Рассмотрим прямоугольную матрицу размера 4 х 2.

           A =

1 2
3 4
5 6
7 8

Полное сингулярное разложение

            [U, S, V] = svd(A)

U = V = S =
0.1525 0.8226 -0.3945 -0.3800
0.3499 0.4214 0.2428 0.8007
0.5474 0.0201 0.6979 -0.4614
0.7448 -0.3812 -0.5462 0.0407
0.6414 -0.7672
0.7672 0.6414
14.2691 0
0 0.6268
0 0
0 0

Экономное сингулярное разложение

           [U, S, V] = svd(A, 0)

U = V = S =
0.1525 0.8226
0.3499 0.4214
0.5474 0.0201
0.7448 -0.3812
0.6414 -0.7672
0.7672 0.6414
14.2691 0
0 0.6268

Пример 2:

Рассмотрим матрицу порядка 5, которая в пределах ошибок округления имеет только нулевые собственные значения [2].

                 A = chebspec(5)

A = 5.5000 -6.8284 2.0000 -1.1716 0.5000
1.7071 -0.7071 -1.4142 0.7071 -0.2929
-0.5000 1.4142 0.0000 -1.4142 0.5000
0.2929 -0.7071 1.4142 0.7071 -1.7071
-0.5000 1.1716 -2.0000 6.8284 -5.5000

                [U, S, V] = svd(A^3)

U = 0.5774 -0.4472 -0.5412 0.2121 0.3588
0.4082 -0.4472 0.2245 -0.2794 -0.7106
0.0000 -0.4472 0.6753 -0.1695 0.5614
-0.4082 -0.4472 0.0819 0.7588 -0.2256
-0.5774 -0.4472 -0.4404 -0.5220 0.0159

 

S = 155.5378 0 0 0 0
0 32.8634 0 0 0
0 0 0.0000 0 0
0 0 0 0.0000 0
0 0 0 0 0.0000

 

V = 0.2673 -0.4082 0.6267 -0.5498 0.2588
-0.5345 0.5774 0.0315 -0.4589 0.4115
0.5345 0.0000 -0.5883 -0.1319 0.5923
-0.5345 -0.5774 -0.0528 0.3475 0.5073
0.2673 0.4082 0.5074 0.5908 0.3943

   

semilogy(svd(A3)) plot(eig(A3)
image709.gif (1218 bytes) image710.gif (837 bytes)

Из анализа графиков следует, что 3 сингулярных числа имеют значения меньше 10-14 и существенно отличаются от остальных; собственные значения находятся в круге радиусом 0.5 * 10-6, то есть являются кратными. Дефект матрицы A3 равен трем.

В рассматриваемом случае это означает, что имеется 3 клетки Жордана, порядок которых пока неизвестен. Применяя пакет прикладных программ JORD [3], можно установить, что в данном случае имеется одна клетка первого и две клетки второго порядка.

Алгоритм:

Функция svd(A) использует модуль svd пакета LINPACK [4].

Пакет программ JORD можно запросить по следующему адресу электронной почты: potem@mephi.ru.

Диагностические сообщения:

Если в течение 75 итераций QR-преобразования сингулярные значения не найдены, выдается сообщение
             Solution will not converge.
             Решение не сходится.

Ссылки:

  1. Уилкинсон, Райнш. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра: Пер. с англ. М.: Машиностроение, 1976. 390 с.
  2. Higham N. J. The Test Matrix Toolbox for MATLAB (version 3.0)//Numerical Analysis Report. Manchester. 1995. Vol. 276.
  3. Потемкин В. Г. Пакет программ JORD. М.: МИФИ, 1995.
  4. Dongarra J. J., Bunch J. R., Moler C. B., Stewart G. W. LINPACK User’s Guide. Philadelphia, 1979.

  В оглавление книги \ К следующему разделу \ К предыдущему разделу

 


Поиск по сайту:

Система Orphus

Яндекс.Метрика