In einem Softwareprojekt, an dem ich arbeite, sind bestimmte Berechnungen für dichte Matrizen mit niedrigem Rang erheblich einfacher. Bei einigen Problemfällen handelt es sich um dichte Matrizen mit niedrigem Rang, die mir jedoch vollständig und nicht als Faktoren zur Verfügung stehen. Daher muss ich den Rang und den Faktor der Matrix überprüfen, wenn ich die Struktur mit niedrigem Rang nutzen möchte .
Die fraglichen Matrizen sind typischerweise vollständig oder nahezu vollständig dicht, wobei n im Bereich von einhundert bis zu einigen tausend liegt. Wenn eine Matrix einen niedrigen Rang hat (sagen wir weniger als 5 bis 10), lohnt es sich, die SVD zu berechnen und sie als Faktorisierung mit niedrigem Rang zu verwenden. Wenn die Matrix jedoch nicht von niedrigem Rang ist, würde der Aufwand verschwendet.
Daher möchte ich einen schnellen und einigermaßen zuverlässigen Weg finden, um festzustellen, ob der Rang niedrig ist oder nicht, bevor ich mich um eine vollständige SVD-Faktorisierung bemühe. Wenn zu irgendeinem Zeitpunkt klar wird, dass der Rang über dem Grenzwert liegt, kann der Prozess sofort gestoppt werden. Wenn die Prozedur fälschlicherweise feststellt, dass die Matrix einen niedrigen Rang hat, wenn dies nicht der Fall ist, ist dies kein großes Problem, da ich immer noch eine vollständige SVD durchführen würde, um den niedrigen Rang zu bestätigen und eine Faktorisierung mit niedrigem Rang zu finden.
Zu den Optionen, die ich in Betracht gezogen habe, gehört ein Rang, der die LU- oder QR-Faktorisierung aufdeckt, gefolgt von einer vollständigen SVD als Überprüfung. Gibt es andere Ansätze, die ich berücksichtigen sollte?