Nullraum einer rechteckigen dichten Matrix


16

Bei einer dichten Matrix was ist der beste Weg, um seine Nullraumbasis innerhalb einer Toleranz zu finden ϵ ?

ARm×n,m>>n;max(m)100000
ϵ

Basierend auf dieser Grundlage kann ich dann sagen , dass bestimmte cols innerhalb linear abhängig sind ? Mit anderen Worten, wenn die Nullraumbasis berechnet wurde, welche Spalten von A müssen entfernt werden, um eine nichtsinguläre Matrix zu erhalten?ϵA

Referenzen sind willkommen.

Antworten:


12

Standardmethoden zur Bestimmung des Nullraums einer Matrix sind die Verwendung einer QR-Zerlegung oder einer SVD. Wenn Genauigkeit an erster Stelle steht, wird die SVD bevorzugt. Die QR-Zerlegung ist schneller.

A=UΣVHVΣmax(m,n)εε

Mit Hilfe der QR - Zerlegung, wenn , und der Rang von ist , dann die letzte Spalten von den Nullraum von Make - up , unter der Annahme , dass die QR - Zerlegung ist enthüllt Rang. Um zu bestimmen , berechnen Sie die Anzahl der Einträge in der Hauptdiagonale von deren Größe eine Toleranz überschreitet (ähnlich der im SVD-Ansatz verwendeten).AAT=QRAn - r Q A r RrnrQArR

Verwenden Sie keine LU-Zerlegung. In der exakten Arithmetik ist dies ein praktikabler Ansatz, bei der Gleitkomma-Arithmetik macht die Akkumulation von numerischen Fehlern die Methode jedoch ungenau.

Wikipedia behandelt diese Themen hier .


Geoff spricht von QR. Angenommen, ich habe die Zerlegung. Wie beziehe ich dann Nullraumbasis und Spalten in der ursprünglichen Matrix? Mit anderen Worten, welche Spalten sollte ich aus entfernen , um den Nullraum loszuwerden? Hier geht es darum, mit selbst zu arbeiten und nicht mit seiner Zersetzung. AAA
Alexander

Routinen, die die QR-Zerlegung berechnen, enthalten normalerweise die Option, einen Permutationsvektor zurückzugeben, der angibt, wie Spalten permutiert werden, um die QR-Faktorisierung zu erhalten. Die letzten Einträge dieses Permutationsvektors würden den Zeilen von (Spalten von ) entsprechen, die sich im Nullraum befinden. Die ersten Einträge dieses Vektors entsprechen den linear unabhängigen Spalten von . Ich bin mir nicht sicher, was du mit "den Nullraum loswerden" meinst. Wollen Sie Spalten von entfernen , um eine nicht singuläre Matrix zu erhalten? A A T r A T AnrAATrATA
Geoff Oxberry

Ja ich meine das Ich werde die Permutation anschauen, danke.
Alexander

Das ist eine andere Frage. Sie würden dann stattdessen die QR-Zerlegung (oder SVD) von berechnen . Wenn Sie die QR-Zerlegung von berechnen, können Sie den Rang von wie in der obigen Antwort berechnen (die Matrix muss nicht transponiert werden), und dann entsprechen die ersten Einträge (wobei der Rang von ) des Permutationsvektors die unabhängigen Spalte von . Dieselbe Art von Algorithmus gilt für die SVD. Wenn Sie zusammen mit der Zerlegung einen Permutationsvektor zurückgeben können, sollte dieser die erforderlichen Informationen liefern. A A r r A AAAArrAA
Geoff Oxberry

8

Wenn , wie Ihre Frage zeigt, können Sie einige Arbeiten speichern, indem Sie zuerst einen Indexsatz von (sagen wir) zufälligen Zeilen und die orthogonale Faktorisierung . (Die QR-Faktorisierung ist diejenige, bei der quadratisch und rechteckig mit Rang ist und die verbleibenden Spalten von Null sind. Die Verwendung einer permutierten QR-Faktorisierung erhöht die Stabilität; die Permutation muss dann detaillierter berücksichtigt werden Rezept.)I p 5 n A T I : = Q R Q R r n - r RmnIp5nAI:T=QRQRrnrR

In der Regel erhalten Sie dadurch einen viel niedrigeren dimensionalen Unterraum, der von den Spalten von , den letzten Spalten von überspannt wird . Dieser Unterraum enthält den Nullraum von . Nun wählen andere, disjunkten Zufallsindexsatz und berechnen die QR Faktorisierung . Multiplizieren Sie den resultierenden Nullraum auf der linken Seite mit , um ein verbessertes mit wahrscheinlich noch geringerer Dimension zu erhalten. Iteriere, bis die Dimension von nicht mehr abnimmt. Dann haben Sie wahrscheinlich den richtigen Nullraum und können dies überprüfen, indem Sie berechnen . Wenn dies noch nicht zu vernachlässigen ist, führen Sie weitere Iterationen mit den höchstwertigen Zeilen durch.n - r Q A ( A I : N ) T N N N A NNnrQA(AI:N)TNNNAN

Bearbeiten: Sobald Sie , können Sie eine maximale Menge von linear unabhängigen Spalten von durch eine orthogonale Faktorisierung von mit Drehung finden. Tatsächlich hat die Menge von Indizes, die nicht als Pivots ausgewählt wurden, diese Eigenschaft.J A N T = Q R JNJANT=QRJ


+1 für eine effiziente Methode zur Bestimmung des Nullraums einer großen Matrix. Ich muss daran denken, diese Antwort später zu konsultieren, wenn ich sie brauche.
Geoff Oxberry

In der Tat, es klingt vernünftig, aber meine Matrizen passen in 16 GB RAM, so würde ich mit Standard Matlab qr bleiben.
Alexander

Herr Prof. Neumaier, ich habe beschlossen, diesen Algorithmus zu testen, verstehe aber nicht genau, was und was "die Berechnung der QR-Faktorisierung von " bedeutet. Könnten Sie uns bitte etwas näher erläutern? ( A I : N ) TN(AI:N)T
Alexander

Ich habe meine Antwort ein wenig überarbeitet. wird nach dem Rezept von Geoff Oxberry berechnet. N
Arnold Neumaier

Vielen Dank. Ich habe es umgesetzt. Meiner Ansicht nach erlaubt dieser Algorithmus jedoch nicht, eine Reihe linear unabhängiger Spalten von zu definieren (da wir anstelle von zerlegen ), sondern hilft nur bei der Schätzung Nullspace-Basis selbst? A T I : A I :AAI:TAI:
Alexander
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.