mxn 行列A (m<=n) に対して経済的なサイズの双対角分解を実行したい
そのような:
A=QBP'
ここで、B はサイズ mxm の二重対角行列で、Q、P は直交行列です。
現在、次の 2 つの Lapack 関数を使用して仕事をしています。
dgebrd(&m,&n,x,&m,d,e,tauq,taup,work,&lwork,&info);
dorgbr(&qp,&m,&m,&n,x,&m,tauq,work,&lwork,&info);
これらから、因数分解を取得できます。
A=USV'
ここで、S はサイズ mx n の二重対角行列です。
行列 S と V を切り捨てて正しい B と P を取得できます。しかし、これは速度の点で最適ではありません。私のテストによると、この方法はエコノミー サイズの SVD を実行するよりもさらに遅くなります。
エコノミーサイズの結果を直接得るには、どの関数を使用する必要がありますか、またはどのように使用すればよいですか?
前もって感謝します。