Сингулярное значение и соответствующие сингулярные векторы прямоугольной матрицы А являются, соответственно, скаляром σ и пара векторов u и v, которые удовлетворяют
где является Эрмитовым, транспонируют A. Сингулярные векторы u и v обычно масштабируются, чтобы иметь норму 1. Кроме того, если вы и v - сингулярные векторы A, затем-u, и-v являются сингулярными векторами A
также.
Сингулярные значения σ являются всегда действительными и неотрицательными, даже если A является комплексным. С сингулярными значениями на диагонали диагональной матрицы Σ и соответствующие сингулярные векторы, формирующие столбцы двух ортогональных матриц U и V, вы получаете уравнения
С тех пор U и V унитарные матрицы, умножение первого уравнения на праве приводит к уравнению сингулярного разложения
Полное сингулярное разложение матрицы m на n включает m-by-m U, m на n Σ, и n на n V. Другими словами, U и V и квадрат, и Σ одного размера как A. Если A имеет еще много строк, чем столбцы (m > n
), то получившийся m
-by-m
матрица U является большим. Однако большинство столбцов в Вас умножается на нули в Σ. В этой ситуации разложение размера экономики экономит и время и устройство хранения данных путем создания m на n U, n на n Σ и тех же V:
Разложение собственного значения является соответствующим инструментом для анализа матрицы, когда это представляет отображение от векторного пространства в себя, как это делает для обыкновенного дифференциального уравнения. Однако сингулярное разложение является соответствующим инструментом для анализа отображения от одного векторного пространства в другое векторное пространство, возможно с различной размерностью. Большинство систем одновременных линейных уравнений попадает в эту вторую категорию.
Если A является квадратным, симметричным, и положительный определенный, то его собственное значение и сингулярные разложения являются тем же самым. Но, когда 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'
равен A
к в ошибке округления. Для этой небольшой проблемы разложение размера экономики незначительно меньше.
[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
к в ошибке округления.
Если матричный A
является большим и разреженным, то использование svd
, чтобы вычислить все сингулярные значения и векторы не всегда практично. Например, если необходимо знать, что всего несколько самых больших сингулярных значений, затем вычисляя все сингулярные значения 5000 5000 разреженной матрицы являются большой дополнительной работой. В случаях, где только подмножество сингулярных значений и векторов требуется, функция svds
предпочтена по svd
.
Для случайной разреженной матрицы 1000 на 1000 с плотностью приблизительно 30%,
n = 1000; A = sprand(n,n,0.3);
шесть самых больших сингулярных значений
S = svds(A) S = 130.2184 16.4358 16.4119 16.3688 16.3242 16.2838
Кроме того, шесть самых маленьких сингулярных значений
S = svds(A,6,'smallest') S = 0.0740 0.0574 0.0388 0.0282 0.0131 0.0066
Для меньших матриц, которые могут уместиться в памяти как полная матрица, full(A)
, с помощью svd(full(A))
может все еще быть более быстрым, чем svds
. Однако для действительно большого и разреженных матриц, с помощью svds
становится необходимым.