Wie approximiere ich die Bedingungszahl einer großen Matrix , wenn eine Kombination aus Fourier-Transformationen (ungleichmäßig oder einheitlich), endlichen Differenzen und Diagonalmatrizen ?G F R S.
Die Matrizen sind sehr groß und nicht im Speicher gespeichert und stehen nur als Funktionen zur Verfügung.
Insbesondere habe ich folgende Matrix:
Ich möchte die Beziehung zwischen und der Bedingungsnummer .k ( G μ )
Ich nehme an, man braucht einen iterativen Ansatz? Optimalerweise wäre MATLAB-Code verfügbar.
Antworten:
MATLAB hat ein paar „exakt“ Funktionen für diese,
cond
undrcond
mit dieser einen Kehrwert der Konditionszahl zurück. Die ungefähre Funktion von Matlabcondest
wird nachstehend ausführlicher beschrieben.Häufig werden Schätzungen der Bedingungsnummer als Nebenprodukte der Lösung eines linearen Systems für die Matrix generiert, sodass Sie möglicherweise die Schätzungen der Bedingungsnummer für andere Arbeiten, die Sie ohnehin ausführen müssen, huckepack nehmen können. Sehen Sie hier eine kurze Beschreibung, wie Schätzungen berechnet werden. In der AztecOO-Dokumentation von Sandia Labs wird auch darauf hingewiesen (siehe Abschnitt 3.1), dass optionale Schätzungen der Bedingungsnummer von iterativen Lösern verfügbar sind (unter Verwendung der generierten tridiagonalen Lanczos-Matrix mit konjugierten Gradienten oder der generierten Hessenburg-Matrix mit neu gestartetem GMRES).
Da Ihre Matrizen "sehr groß" und "nur als Funktionen verfügbar" sind, wäre der logische Ansatz eine Methode, die auf einen konjugierten Gradientenlöser oder eine konjugierte Variante zurückgreift.
Ein kürzlich veröffentlichter Artikel von arXiv.org über instationäre extreme Eigenwertnäherungen in iterativen Lösungen linearer Systeme und Schätzer für relative Fehler schlägt einen solchen Ansatz vor und enthält einige Zitate zur früheren Literatur.
Nun, da ich nachschaue, hat dieses Forum eine Reihe eng verwandter vorheriger Fragen (nicht alle mit Antworten, aber überprüfen Sie die Kommentare):
Schätzen Sie extreme Eigenwerte mit CG
Schätzung der Bedingungszahlen für sehr große Matrizen
Schnellster Algorithmus zur Berechnung der Bedingungsnummer einer großen Matrix in Matlab / Octave
Da die Verfügbarkeit von MATLAB-Code Teil der Frage war, finden Sie hier einige Informationen zu∥A∥1∥A−1∥1 ∥A∥1 ∥A−1∥1
condest
einer integrierten Funktion, die die 1-Norm-Bedingungsnummer schätzt . Die Idee stammt von Hager (1984), mit einer Beschreibung von 2010 und Erweiterungen hier , um (maximale 1-Norm einer Spalte finden) explizit zu berechnen und schätzen durch eine Gradientenmethode. Siehe auch John Burkardts CONDITION , eine MATLAB-Bibliothek (andere verfügbare Sprachen) "zum Berechnen oder Schätzen der Bedingungsnummer einer Matrix". ‖ A ‖ 1 ‖ A - 1 ‖ 1Da Ihre Matrix anscheinend hermitisch und eindeutig positiv ist, ist möglicherweise die 2-Norm-Bedingungszahl von größerem Interesse. Das Problem besteht dann darin, das Verhältnis der größten zu den kleinsten (absoluten) Eigenwerten zu schätzen. Die Herausforderung ist insofern etwas parallel zum 1-Norm-Fall, als im Allgemeinen eine gute Schätzung für den größten Eigenwert leicht erhalten werden kann, die Schätzung des kleinsten Eigenwerts sich jedoch als schwieriger erweist.
Obwohl dieses kürzlich erschienene arXiv.org-Papier, Reliable Iterative Condition-Number Estimation , auf Fälle ohne SPD (und sogar ohne Quadrat) abzielt , bietet es einen guten Überblick über das kleinste Problem der Eigenwertschätzung und eine vielversprechende Angriffslinie durch einen Krylov-Subraum Methode (LSQR), die im SPD-Fall Gradienten konjugieren entspricht.
quelle