MATLAB позволяет использовать матрицу с большим количеством столбцов, чем строк, при вычислении разложения по сингулярным числам.
>> a_matrix = [1.0, 0.0, 0.0, 0.0, 2.0;
0.0, 0.0, 3.0, 0.0, 0.0;
0.0, 0.0, 0.0, 0.0, 0.0;
0.0, 2.0, 0.0, 0.0, 0.0]
a_matrix =
1 0 0 0 2
0 0 3 0 0
0 0 0 0 0
0 2 0 0 0
>> [u, s, v] = svd(a_matrix)
u =
0 -1 0 0
-1 0 0 0
0 0 0 -1
0 0 -1 0
s =
3.0000 0 0 0 0
0 2.2361 0 0 0
0 0 2.0000 0 0
0 0 0 0 0
v =
0 -0.4472 0 0 -0.8944
0 0 -1.0000 0 0
-1.0000 0 0 0 0
0 0 0 1.0000 0
0 -0.8944 0 0 0.4472
Но в Научной библиотеке GNU (GSL) этого нет. Это дает эту ошибку:
gsl: svd.c:61: ERROR: svd of MxN matrix, M<N, is not implemented
Default GSL error handler invoked.
Является ли это недостатком GSL или его можно обойти?
s
и поменять местамиu
иv
? - person Luis Mendo   schedule 01.03.2021