Ich arbeite an einem schlecht konditionierten großen, spärlichen linearen Gleichungssystem. Ich möchte Doppel-Doppel-Arithmetik oder Quad-Doppel-Arithmetik verwenden, um sie zu lösen. Ich weiß, dass es ein Paket namens MPACK gibt, das von Nakata, Maho, entwickelt wurde und numerische lineare algebraische Berechnungen unter Quad-Double-Arithmetik durchführen kann. Es ist jedoch für eine dichte Matrix ausgelegt, nicht für eine spärliche Matrix. Wissen Sie, ob es ein Quad-Double-Arithmetik-Sparse-Matrix-Paket gibt?
sparse-matrix
matrix
condition-number
Hanyu Ye
quelle
quelle
Antworten:
Ab Version 3.2 unterstützt PETSc spärliche Berechnungen mit vierfacher Genauigkeit unter gcc / gfortran 4.6 und höher.
Sie benötigen BLAS und LAPACK mit vierfacher Genauigkeit, die PETSc Ihnen (zusammen mit der Quad-Unterstützung) mit dem folgenden (teilweisen) Konfigurationsbefehl zur Verfügung stellen kann:
Weitere Informationen finden Sie in den FAQ .
Außerdem stimme ich nOOb zu , wenn möglich, versuchen Sie, das System zu regulieren, bevor Sie auf Quad-Präzision umschalten.
quelle
Schlecht konditionierte Systeme lassen sich besser durch Regularisierung lösen als durch Erhöhung der numerischen Genauigkeit. Suchen Sie nach "Regularisierung schlecht gestellt" für die blutigen Details.
quelle
Ich könnte die Trilinos-Bibliothek ausprobieren. Sie haben Sparse-Matrix-Bibliotheken unter Tpetra (das Epetra, ihre ursprüngliche Sparse-Matrix-Bibliothek, ersetzen soll) als Vorlage verwendet. Sie können Double, Complex, Quad usw. vorlegen, und sie haben möglicherweise die größte Auswahl an Solvern (sowohl direkt als auch iterativ) neben PETSc.
Bearbeiten: Nach dem Lesen der Kommentare scheint die unmittelbare Nützlichkeit von Tpetra ein wenig fraglich in Bezug auf Quad-Präzision zu sein ...
quelle
__float128
dass ich von Tpetra unterstützt werde, geschweige denn von Quad-Double. Tpetra ist nicht eigenständig und kein All-Header, und selbst wenn es so wäre,std::complex
funktionieren Dinge wie nur mitfloat
unddouble
.Die Multiprecision Computing Toolbox für MATLAB unterstützt spärliche Matrizen und ist speziell für Berechnungen mit vierfacher Genauigkeit optimiert.
Hier finden Sie Timing-Details für Sparse-Solver mit vierfacher Genauigkeit: Direct Solvers für Sparse-Matrizen
(Ich bin der Autor der Toolbox).
quelle