numpy.svd を使用して、条件の悪い行列の特異値分解を計算しています。一部の特殊なケースでは、svd が収束せず、Linalg.Error が発生します。いくつかの調査を行ったところ、numpy が LAPACK の DGESDD ルーチンを使用していることがわかりました。標準の実装では、ハードコードされた反復制限が 35 か何かの反復に設定されています。Matlab で同じ行列を分解しようとすると、すべてうまくいきます。これには 2 つの理由があると思います。2. Matlab は、ルーチンで 75 の反復制限を使用します。(彼らはソースでそれを変更し、再コンパイルしました。)
ここでの質問は、numpy ソースを変更せずに、numpy で使用されているバックエンドを DGESDD から DGESVD に変更する簡単な方法はありますか?
よろしくお願いします