Suche nach Testmatrizen / -systemen für iterative lineare Solver

8

Ich arbeite gerade an einer C ++ - basierten Bibliothek für große, spärliche lineare Algebra-Probleme (ja, ich weiß, dass es viele solcher Bibliotheken gibt, aber ich leite meine eigenen, um mehr über iterative Solver, spärliche Speichercontainer usw. zu erfahren). .).

Ich bin soweit, dass ich meine Solver in anderen meiner Programmierprojekte verwende und die Solver gegen Probleme, die nicht meine eigenen sind, testen möchte. In erster Linie suche ich nach symmetrischen dünn besetzten Systemen, die positiv definit sind. Ich habe mehrere Quellen für solche Systemmatrizen gefunden, wie zum Beispiel:

Matrix-Markt UF Sparse Matrix Collection

Davon abgesehen habe ich noch keine Quellen für gute Testmatrizen gefunden, die die gesamte Systemmatrix und RHS enthalten. Dies wäre großartig, um die Ergebnisse zu überprüfen. Irgendwelche Tipps, wo ich solche kompletten Systeme finden kann oder was ich tun könnte, um ein "gutes" RHS für die Systemmatrizen zu generieren, die ich online bekommen kann? Ich fülle gerade eine Matrix mit zufälligen Werten oder allen Einsen, aber vermute, dass dies nicht unbedingt der beste Weg ist.

    
MarkD 01.12.2010, 19:29
quelle

3 Antworten

1

Ich würde vorschlagen, einen rechtsseitigen Vektor zu verwenden, der von einer vordefinierten "Ziel" -Lösung x:

erhalten wird %Vor%

Dann haben Sie eine Ziellösung, x, und eine resultierende Lösung, x, aus dem Solver. Dies bedeutet, dass Sie den Fehler (Unterschied des Ziels und der resultierenden Lösungen) sowie die Residuen (A * x - b) vergleichen können.

Beachten Sie, dass Sie für die sorgfältige Auswertung eines iterativen Solver auch überlegen müssen, was Sie für das anfängliche x verwenden sollen.

Die Online-Sammlungen von Matrizen enthalten hauptsächlich die linksseitige Matrix, aber einige enthalten rechte Seiten und einige auch Lösungsvektoren.:

Ссылка

Übrigens, für die UF-Sparse-Matrix-Sammlung würde ich stattdessen diesen Link vorschlagen:

Ссылка

    
Paul Thompson 19.08.2011 11:07
quelle
0

Ich habe es noch nicht benutzt, aber GiNAC scheint das Beste zu sein, was ich für C ++ gefunden habe. Es ist die Bibliothek, die hinter Maple für CAS verwendet wird, ich kenne nicht die Leistung, für die es da ist.

Ссылка

    
norcalli 28.07.2011 03:52
quelle
0

es wäre gut zu spezifizieren, welche Art von Problemen lösen Sie ... Verschiedene Probleme erfordern unterschiedliche RHS, um die Gültigkeit zu überprüfen ..... was ich vorschlagen werde, ist ein Beispielcode von einigen Projekten wie DUNE Numerics (ich arbeite gerade daran), FENICS , deal.ii , die bereits die Solver verwenden, um Matrizen zu lösen ... im Allgemeinen haben sie einige Funktionen, um Ihre Matrix in irgendeiner Art von Datei auszugeben (DUNE Numerics hat Funktionalität zu Ausgangsmatrizen und RHS in Matlab-konformen Dateien).

Dies können Sie dann Ihren Lösern zuführen. und verwenden Sie dann wieder ihre Bibliotheksfunktionalität, um Ausgabedaten zu erstellen (Wie DUNE Numerics verwendet ein VTK-Format) ... Das heißt, Sie werden Daten mit leistungsfähigen Tools analysieren .....

müssen Sie vielleicht etwas über das Kompilieren und Verwenden dieser Bibliotheken lernen ... aber es ist nicht viel ... und ich glaube, dass die Funktionalität, die du bekommst, die investierte Zeit wert wäre ...

Ich schätze, selbst ein einziges wohldefiniertes und einigermaßen komplexes Problem sollte gut genug sein, um Ihre Bibliotheken zu testen ... naja, eigentlich zwei eine für Ax = B Probleme und eine andere für Ax = cBx (Eigenwertprobleme) ....

    
user796530 30.07.2011 11:53
quelle