svd

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

Синтаксис

S = svd(A);
S = svd(A, U, V);

Аргументы

Имя Тип данных Описание
A array2 Входная матрица общего вида
U array2 Выходная матрица, содержащая левые сингулярные векторы по столбцам
V array2 Выходная матрица, содержащая правые сингулярные векторы по строкам

Описание

svd(A) – функция вычисляет сингулярное разложение матрицы A, результат - вектор сингулярных значений S

svd(A, U, V) – функция вычисляет сингулярное разложение матрицы A, результат - вектор сингулярных значений S и матрицы левых и правых сингулярных векторов U и V такие, что A = U * diag(S) * V

Входная матрица A может задаваться:

  • как переменная типа матрица, определенная ранее:

    S = svd(A);

  • как матрица, состоящая из переменных, определенных ранее:

    S = svd([[a1, a2],[a3, a4]]);

  • как постоянный массив:

    S = svd([[1, 2],[5, 7]]);

Результат

Имя Тип данных Описание
S array Вектор диагональных значений сингулярной матрицы. Сингулярные значения являются неотрицательными вещественными числами, расположенными в порядке убывания

Пример 1

const A = [[1, 0, 1], [-1, -2, 0], [0, 1, -1]];

S = svd(A);

В скрипте примера производится сингулярное разложение матрицы A. В результате выполнения скрипта массиву сингулярных S будет присвоено значение [2.46050487 , 1.699628148 , 0.2391232783].

Пример 2

const A =  [[1, 2], [3, 4], [5, 6], [7, 8]];
var U: array2, V: array2;

S = svd(A,U,V);

//Проверка разложения
D = U * diag(S,4) * V

В скрипте примера производится сингулярное разложение матрицы A. В результате выполнения скрипта массиву сингулярных S будет присвоено значение [14.2690955 , 0.6268282324]. Переменным U и V будут присвоены значения матриц, содержащих левые и правые сингулярные векторы соответственно:

U = [[-0.1524832333,  -0.8226474722, -0.3945010223, -0.3799591339];
     [-0.3499183718,  -0.4213752877,  0.2427965457,  0.8006558795];
     [-0.5473535103, -0.02010310314,  0.6979099754, -0.4614343574];
     [-0.7447886488,   0.3811690814, -0.5462054989, 0.04073761175]]

V = [[-0.641423028, -0.7671873951];
     [0.7671873951, -0.641423028]]

diag(S,4) = [[14.2690955,            0];
             [         0, 0.6268282324];
             [         0,            0];
             [         0,            0]]

Переменной D будет присвоено значение, равное исходной матрице A.

Сопутствующие материалы

Материалов нет.