Was ist der beste (schnellste) Weg, um die Determinante einer (nicht symmetrischen, quadratischen) LaMatGenDouble Matrix mit der lapack++ Bibliothek zu berechnen?Wie berechne Determinantenmatrix mit lapack ++ (2.5+)
Antwort
Eine Möglichkeit, die Determinante wird unter Verwendung der LU-Zerlegung zu berechnen:
LaVectorLongInt pivots(A.cols());
LUFactorizeIP(A, pivots);
double detA = 1;
for (int i = 0; i < A.cols(); ++i)
detA *= A(i, i);
Warnung, A wird sich ändern, so dass eine Kopie erstellt wird wahrscheinlich beraten.
Ich weiß nicht über lapack ++, aber ich bin sicher, dass es nicht in Standard lapack, check. Soweit ich weiß, implementiert lapack ++ die matriciale Operation nicht selbst, sondern benutzt andere, tatsächlich kann man zwischen mehreren wechseln (Atlas, mkl (Intel Math Kernel Library) usw.). Daher gehe ich davon aus, dass es auch in lapack ++ irgendeine determinante Operation gibt.
Lapack ++ enthält alle BLAS-Operationen. Es gibt keine bestimmende Funktion in BLAS, aber es gibt wahrscheinlich andere Methoden, die verwendet werden können, um die Determinante zu erhalten. –
Entschuldigung, ich habe Ihre Frage missverstanden. Ich habe das schlechte Karma verdient :-). –
- 1. LAPACK-Orthonormierungsfunktion
- 2. Lapack-Verknüpfungsfehler, neukompilieren mit -fPIC
- 3. F # 1.9.9.9 und lapack
- 4. Verteilen von Cython-basierten Erweiterungen mit LAPACK
- 5. Programm langsamer mit OpenMP wegen LAPACK
- 6. Kompiliere LAPACK für Windows mit MinGW-w64
- 7. lapack undefined Referenz
- 8. Kompilierungsfehler mit boost-python und lapack
- 9. Wie Setup-Wiedergabe 2.5 mit ReactiveMongo
- 10. Berechne rand7() mit rand5()
- 11. Deadlocks mit Play 2.5 scala, deadbolt 2.5 und MongoDB/Morphia
- 12. Wie berechne ich NSNumber
- 13. Wie berechne ich Perzentile mit Python/Numpy?
- 14. Wie berechne ich RMSE mit IPython/NumPy?
- 15. Wie berechne ich mit dem Padding
- 16. Wie berechne ich Binomialverteilung mit MATLAB?
- 17. LAPACK dgesv VS MATLAB mldivide
- 18. numpy.distutils.system_info.NotFoundError: keine lapack/blas Ressourcen
- 19. gfortran LAPACK "undefined reference" Fehler
- 20. Joomla 2.5 - Komponentenentwicklung - mit Formular
- 21. $ _POST mit Joomla 2.5 erhalten
- 22. Berechne euklidische Distanz mit R
- 23. Berechne Fortschrittsbalkenprozentsatz
- 24. Berechne TF-IDF mit Sql
- 25. Berechne Dezibel
- 26. Wie berechne ich die Seitentabellengröße?
- 27. Understanding LAPACK Anrufe in C++ mit einem einfachen Beispiel
- 28. Python 2.5 datiert?
- 29. Sind die LAPACK-Routinen Thread-sicher?
- 30. Nan mit Python 2.5 unter Windows
Ich akzeptiere diese Antwort jetzt als akzeptiert, weil keine anderen Optionen zur Verfügung gestellt wurden. Wenn jemand eine andere (gute, akzeptable) Lösung hinzufügt, werde ich diese Antwort akzeptieren. –
Ich denke, dass Sie auch ein negatives Vorzeichen benötigen, wenn Sie eine ungerade Anzahl von Permutationen haben (Pivot-Größe ist ungerade). Siehe auch: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?p=341p336 –
Die Faktorisierung ist 'A = PLU'. Hier hat L die Diagonalen, also det (L) = 1. Nun ist det (A) = det (P) · det (L) · det (U) = det (P) · 1 · det (U). In dem obigen Code wird das Vorzeichen der Permutationsmatrix "P" (dargestellt als ein Array von Pivots) nicht behandelt. – soegaard