SVD - 特異値分解
この手続きは、行列の特異値分解 A = U * SIGMA * transpose(V) を計算する。
使用法
SVDストアド・プロシージャの構文は以下の通りである:
- SVD matrixA,matrixU,matrixS,matrixVT )
- パラメーター
- matrixA
- 入力行列 A の名前。
- matrixU
- 出力行列 U の名前。
- matrixS
- 1列の出力行列Sの名前。
- matrixVT
- 出力行列 transpose(V) の名前.
詳細
call nzm..vec_to_diag('S','SIGMA');" を使用して、1 列の行列 S から対角行列 SIGMA を作成する。
例
call nzm..shape('1,2,3,4,5,6,7,8,9,0',3,3,'A');
call nzm..svd('A', 'U', 'S', 'VT');
call nzm..vec_to_diag('S','SIGMA');
call nzm..gemm('U', 'SIGMA', 'USIGMA');
call nzm..gemm('USIGMA', 'VT', 'A1');
call nzm..subtract('A', 'A1', 'A0');
call nzm..print('A0');
call nzm..delete_matrix('A');
call nzm..delete_matrix('U');
call nzm..delete_matrix('S');
call nzm..delete_matrix('VT');
call nzm..delete_matrix('SIGMA');
call nzm..delete_matrix('USIGMA');
call nzm..delete_matrix('A0');
call nzm..delete_matrix('A1');
SHAPE
-------
t
(1 row)
SVD
-----
t
(1 row)
VEC_TO_DIAG
-------------
t
(1 row)
GEMM
------
t
(1 row)
GEMM
------
t
(1 row)
SUBTRACT
----------
t
(1 row)
PRINT
---------------------------------------------------------------------------------------------------------------
-- matrix: A0 --
-1.7763568394003e-15, -6.2172489379009e-15, -3.1086244689504e-15
-1.7763568394003e-15, -1.7763568394003e-15, -4.4408920985006e-15
-2.6645352591004e-15, -7.105427357601e-15, -7.105427357601e-15
(1 row)
DELETE_MATRIX
---------------
t
(1 row)
DELETE_MATRIX
---------------
t
(1 row)
DELETE_MATRIX
---------------
t
(1 row)
DELETE_MATRIX
---------------
t
(1 row)
DELETE_MATRIX
---------------
t
(1 row)
DELETE_MATRIX
---------------
t
(1 row)
DELETE_MATRIX
---------------
t
(1 row)
DELETE_MATRIX
---------------
t
(1 row)