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) возвращает разложение размера экономики матричного A. Если A m- n матрица с m > nто svd вычисляет только первый n столбцы U и S n- n матрица. Для m <= n, этот синтаксис эквивалентен svd(A).

пример

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

пример

[___] = svd(___,outputForm) возвращает сингулярные значения в форме, заданной outputForm использование любого из аргументов ввода или вывода в предыдущих синтаксисах. Задайте outputForm как 'vector' возвращать сингулярные значения как вектор-столбец или как 'matrix' возвращать сингулярные значения как диагональную матрицу. (начиная с R2021b)

Примеры

свернуть все

Вычислите сингулярные значения символьного магического квадрата 5 на 5. Результатом является вектор-столбец.

A = sym(magic(5));
sigma = svd(A)
sigma = 

(6551345+65655+5655-5565-1345)

В качестве альтернативы задайте 'matrix' опция, чтобы возвратить сингулярные значения как диагональную матрицу.

S = svd(A,'matrix')
S = 

(650000051345+6500000655+500000655-500000565-1345)

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

syms t real
A = [0 1; -1 0];
E = expm(t*A)
E = 

(cos(t)sin(t)-sin(t)cos(t))

sigma = svd(E)
sigma = 

(cos(t)2+sin(t)2cos(t)2+sin(t)2)

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

sigma = simplify(sigma)
sigma = 

(11)

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

syms t

Создайте символьную матрицу 5 на 5 из магического квадрата порядка 6. Вычислите сингулярные значения матрицы с помощью svd.

M = magic(6);
A = sym(M(1:5,1:5));
sigma = svd(A)
sigma = 

(root(σ1,z,5)root(σ1,z,4)root(σ1,z,3)root(σ1,z,2)root(σ1,z,1))where  σ1=z5-11357z4+26691022z3-17903673324z2+979310921328z-1676258447616

svd функция не может найти точные сингулярные значения в терминах символьных чисел. Вместо этого это возвращает их в терминах root функция.

Используйте vpa численно аппроксимировать сингулярные значения.

sigmaVpa = vpa(sigma)
sigmaVpa = 

(91.90338229938887559838064521710541.66752364570567794703813090238733.3893117613526255506073034298057.61386514813710461179507988708961.3299296132187199146053915272808)

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

old = digits(10);
A = sym(magic(5))
A = 

(17241815235714164613202210121921311182529)

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

(0.44721359550.54563487310.5116672736-0.1954395076-0.44975836320.44721359550.4497583632-0.19543950760.51166727360.54563487310.4472135955-1.547164189e-27-0.632455532-0.6324555321.213456644e-270.4472135955-0.4497583632-0.19543950760.5116672736-0.54563487310.4472135955-0.54563487310.5116672736-0.19543950760.4497583632)

S = 

(65.00000022.547088690000021.687425360000013.4035660000011.90078954)

V = 

(0.44721359550.40451643610.24656489620.66272600070.36927828660.44721359550.0055661597140.6627260007-0.2465648962-0.54769427410.4472135955-0.82016519161.767621593e-279.706484055e-280.35683197510.44721359550.005566159714-0.66272600070.2465648962-0.54769427410.44721359550.4045164361-0.2465648962-0.66272600070.3692782866)

digits(old)

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

vpa(U*S*V',10)
ans = 

(17.024.01.08.015.023.05.07.014.016.04.06.013.020.022.010.012.019.021.03.011.018.025.02.09.0)

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

old = digits(8);
A = sym([1 2; 3 4; 5 6; 7 8])
A = 

(12345678)

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

(0.15248323-0.82264747-0.39450102-0.379959130.34991837-0.421375290.242796550.800655880.54735351-0.0201031030.69790998-0.461434360.744788650.38116908-0.54620550.040737612)

S = 

(14.269095000.626828230000)

V = 

(0.641423030.76718740.7671874-0.64142303)

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

(0.15248323-0.822647470.34991837-0.421375290.54735351-0.0201031030.744788650.38116908)

S = 

(14.269095000.62682823)

V = 

(0.641423030.76718740.7671874-0.64142303)

digits(old)

Начиная с A 4 2 матрица, svd(A,'econ') возвращает меньше столбцов в U и меньше строк в S по сравнению с полным разложением. Дополнительные строки нулей в S исключены, наряду с соответствующими столбцами в U это умножило бы с теми нулями в выражении A = U*S*V'.

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

свернуть все

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

Начиная с R2021b

Выходной формат сингулярных значений в виде 'vector' или 'matrix'. Эта опция позволяет вам задавать, возвращены ли сингулярные значения как вектор-столбец или диагональная матрица. Поведение по умолчанию варьируется согласно количеству заданных выходных параметров:

  • Если вы задаете тот выход, такой как sigma = svd(A), затем сингулярные значения возвращены как вектор-столбец по умолчанию.

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

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

свернуть все

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

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

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

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

Советы

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

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

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

Вопросы совместимости

развернуть все

Поведение изменяется в R2021b

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

| | | | | | |

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