スパース行列で部分ピボットを使用して LU 分解を実行したいと考えています。フル ピボットはスパース マトリックスに対して非常に高速で効率的であり、パーシャル ピボットはスパース マトリックスに対して効率的ではないようです。私の推測では、スパース用にサポートまたは最適化されていないということです。
A=randn(1e4).*(rand(1e4)<0.0001);
S=sparse(A);
tic; [l,u,p]=lu(A); toc
Elapsed time is 8.699264 seconds.
tic; [l,u,p,q]=lu(S); toc
Elapsed time is 0.006430 seconds.
2 番目のフル ピボットは非常に高速です (1400 倍)。
私の質問は、どうしてですか?マトリックスがまばらな場合、部分ピボット LU はより効率的であり、完全なピボットよりも常に (またはほとんど常に) 高速であるべきではありませんか?
スパース行列で部分ピボットを使用して高速 LU を実行する方法を知っている人はいますか?
ありがとう、ギル