svd

Сингулярное разложение символьной матрицы

Описание

пример

sigma = svd(A) возвращает векторный sigma содержа сингулярные значения символьной матрицы A.

пример

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

пример

[U,S,V] = svd(A,0) возвращает тонкое, или экономика, SVD. Если A m- n матрица с m > n, затем svd вычисляет только первый n столбцы U. В этом случае, S n- n матрица. Для m <= n, этот синтаксис эквивалентен svd(A).

пример

[U,S,V] = svd(A,'econ') также возвращает тонкое, или экономика, SVD. Если A m- n матрица с m >= n, затем этот синтаксис эквивалентен svd(A,0). Для m < nsvd вычисляет только первый m столбцы V. В этом случае, S m- m матрица.

Примеры

Символьные сингулярные значения

Вычислите сингулярные значения символьного 5- 5 магический квадрат:

A = sym(magic(5));
sigma = svd(A)
sigma =
 
                              65
 5^(1/2)*(1345^(1/2) + 65)^(1/2)
    65^(1/2)*(5^(1/2) + 5)^(1/2)
    65^(1/2)*(5 - 5^(1/2))^(1/2)
 5^(1/2)*(65 - 1345^(1/2))^(1/2)

Теперь вычислите сингулярные значения матрицы, элементами которой являются символьные выражения:

syms t real
A = [0 1; -1 0];
E = expm(t*A)
sigma = svd(E)
E =
[  cos(t), sin(t)]
[ -sin(t), cos(t)]
 
sigma =
 (cos(t)^2 + sin(t)^2)^(1/2)
 (cos(t)^2 + sin(t)^2)^(1/2)

Упростите результат:

sigma = simplify(sigma)
sigma =
 1
 1

Для дальнейших расчетов удалите предположение на t путем воссоздания его с помощью syms:

syms t

Сингулярные значения с плавающей точкой

Преобразуйте элементы символьного 5- 5 магический квадрат к числам с плавающей запятой, и вычисляет сингулярные значения матрицы:

A = sym(magic(5));
sigma = svd(vpa(A))
sigma =
 
                              65.0
 22.547088685879657984674226396467
 21.687425355202639411956035427154
 13.403565997991492328585154445703
 11.900789544861194527298509087321

Сингулярные значения и сингулярные векторы

Вычислите сингулярные значения и сингулярные векторы 5- 5 магический квадрат:

old = digits(10);
A = sym(magic(5))
[U, S, V] = svd(A)
digits(old)
A =
 
[ 17, 24,  1,  8, 15]
[ 23,  5,  7, 14, 16]
[  4,  6, 13, 20, 22]
[ 10, 12, 19, 21,  3]
[ 11, 18, 25,  2,  9]
 
 
U =
 
[ 0.4472135955,    0.5456348731,  0.5116672736, -0.1954395076,  -0.4497583632]
[ 0.4472135955,    0.4497583632, -0.1954395076,  0.5116672736,   0.5456348731]
[ 0.4472135955, 2.420694008e-15,  -0.632455532,  -0.632455532, 1.29906993e-15]
[ 0.4472135955,   -0.4497583632, -0.1954395076,  0.5116672736,  -0.5456348731]
[ 0.4472135955,   -0.5456348731,  0.5116672736, -0.1954395076,   0.4497583632]
 
 
S =
 
[ 65.0,           0,           0,         0,           0]
[    0, 22.54708869,           0,         0,           0]
[    0,           0, 21.68742536,         0,           0]
[    0,           0,           0, 13.403566,           0]
[    0,           0,           0,         0, 11.90078954]
 
 
V =
 
[ 0.4472135955,   0.4045164361,     0.2465648962,    0.6627260007,  0.3692782866]
[ 0.4472135955, 0.005566159714,     0.6627260007,   -0.2465648962, -0.5476942741]
[ 0.4472135955,  -0.8201651916, -3.091014288e-15, 6.350407543e-16,  0.3568319751]
[ 0.4472135955, 0.005566159714,    -0.6627260007,    0.2465648962, -0.5476942741]
[ 0.4472135955,   0.4045164361,    -0.2465648962,   -0.6627260007,  0.3692782866]

Вычислите продукт US, и Эрмитовы транспонируют V с 10-разрядной точностью. Результатом является исходный матричный A со всеми его элементами, преобразованными в числа с плавающей запятой:

vpa(U*S*V',10)
ans =
 
[ 17.0, 24.0,  1.0,  8.0, 15.0]
[ 23.0,  5.0,  7.0, 14.0, 16.0]
[  4.0,  6.0, 13.0, 20.0, 22.0]
[ 10.0, 12.0, 19.0, 21.0,  3.0]
[ 11.0, 18.0, 25.0,  2.0,  9.0]

Тонкий или экономика SVD

Используйте второй входной параметр 0 вычислить тонкое, или экономика, SVD этого 3- 2 матрица:

old = digits(10);
A = sym([1 1;2 2; 2 2]);
[U, S, V] = svd(A, 0)
U =
[ 0.3333333333, -0.6666666667]
[ 0.6666666667,  0.6666666667]
[ 0.6666666667, -0.3333333333]
 
S =
[ 4.242640687, 0]
[           0, 0]
 
V =
[ 0.7071067812,  0.7071067812]
[ 0.7071067812, -0.7071067812]

Теперь используйте второй входной параметр 'econ' вычислить тонкое, или экономика, матричного B. Здесь, 3- 2 матричный B транспонирование A.

B = A';
[U, S, V] = svd(B, 'econ')
digits(old)
U =
[ 0.7071067812, -0.7071067812]
[ 0.7071067812,  0.7071067812]
 
S =
[ 4.242640687, 0]
[           0, 0]
 
V =
[ 0.3333333333,  0.6666666667]
[ 0.6666666667, -0.6666666667]
[ 0.6666666667,  0.3333333333]

Входные параметры

свернуть все

Введите матрицу, заданную как символьная матрица. Для синтаксисов с одним выходным аргументом, элементами A могут быть символьные числа, переменные, выражения или функции. Для синтаксисов с тремя выходными аргументами, элементами A должно быть конвертируемым к числам с плавающей запятой.

Выходные аргументы

свернуть все

Сингулярные значения матрицы, возвращенной как вектор. Если sigma вектор чисел, затем его элементы сортируются в порядке убывания.

Сингулярные векторы, возвращенные как унитарная матрица. Каждый столбец этой матрицы является сингулярным вектором.

Сингулярные значения, возвращенные как диагональная матрица. Диагональные элементы этой матрицы появляются в порядке убывания.

Сингулярные векторы, возвращенные как унитарная матрица. Каждый столбец этой матрицы является сингулярным вектором.

Советы

  • Вторые аргументы 0 и 'econ' только влияйте на форму возвращенных матриц. Эти аргументы не влияют на производительность расчетов.

  • Вызов svd для числовых матриц, которые не являются символьными объектами, вызывает MATLAB® svd функция.

  • Матричные расчеты, включающие много символьных переменных, могут быть медленными. Чтобы увеличить вычислительную скорость, сократите количество символьных переменных путем заменения данными значениями некоторые переменные.

Смотрите также

| | | | | | |

Представлено до R2006a

Для просмотра документации необходимо авторизоваться на сайте