Купить Matlab  |  Mathematica  |  Mathcad  |  Maple  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Форум  |  Download
https://hub.exponenta.ru/


Справочник по 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.

    В начало страницы К предыдущему разделуК следующему разделу

    | На первую страницу | Поиск | Купить Matlab

    Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter


    Copyright © 1993-2024. Компания Softline. Все права защищены.

    Дата последнего обновления информации на сайте: 04.03.17
    Сайт начал работу 01.09.00