私は、cでgslライブラリを使って行列A(m、n)の空白を計算しています。例えばA = USVtとしてGSLに特異値分解(SVD)関数のドキュメント以下M <NでGSLを介して行列の空白を計算するとエラーが発生する
"階数欠損行列の場合、Aのヌル空間をゼロに対応するVの列によって与えられます。 。
#include <gsl/gsl_linalg.h>
#include <gsl/gsl_blas.h>
#include <stdio.h>
#include <stdlib.h>
...
int main(int argc, char **argv){
...
gsl_linalg_SV_decomp(A,V,S,work);
return 0;
}
:特異値 "
対応する関数は
int gsl_linalg_SV_decomp(gsl_matrix * A, gsl_matrix * V, gsl_vector * S, gsl_vector * work)
構文は以下の通りです
は、私は次のエラーを取得
gsl: svd.c:60: ERROR: svd of MxN matrix, M<N, is not implemented
Default GSL error handler invoked
確かにAがあるM < N.
あなたはM < Nの行列の零空間を計算します別のライブラリを知っていますか? gslの回避策はありますか?
ここにあなたが言ったことをする実用的なコードです。https://github.com/RasmusFonseca/SVDcomparison/blob/master/SVDGSL.cpp – Marouen