私が取り組んでいるソフトウェアプロジェクトでは、特定の計算は、高密度の低ランクマトリックスに対して非常に簡単です。いくつかの問題の例には、高密度の低ランクマトリックスが含まれていますが、それらは要因としてではなく、完全に与えられているので、低ランク構造を利用したい場合は、ランクをチェックしてマトリックスを分解する必要があります。
問題のマトリックスは通常、完全にまたはほぼ完全に高密度で、nは100から数千までの範囲です。行列のランクが低い場合(5〜10未満など)、SVDを計算し、それを使用して低ランクの因数分解を行うことは労力に値します。ただし、マトリックスのランクが低い場合、労力は無駄になります。
したがって、完全なSVD分解を行うための労力を投資する前に、ランクが低いかどうかを判断するための高速で合理的に信頼できる方法を見つけたいと思います。ランクがカットオフを超えていることが明らかになった場合、プロセスはすぐに停止できます。手順が誤って低ランクであるとマトリックスを宣言した場合、これは大きな問題ではありません。低ランクを確認して低ランクの因数分解を見つけるために完全なSVDを実行しているからです。
私が検討したオプションには、LU分解またはQR分解を示すランクの後にチェックとして完全なSVDが含まれます。他に考慮すべきアプローチはありますか?