Ich versuche, eine Determinante mit den Boost C++ - Bibliotheken zu berechnen. Ich habe den Code für die Funktion InvertMatrix() gefunden, die ich unten kopiert habe. Jedes Mal, wenn ich diese Umkehrung berechne, möchte ich auch die Determinante. Ich habe eine gute Idee, wie man rechnet, indem man die Diagonale der U-Matrix von der LU-Zerlegung multipliziert. Es gibt ein Problem, ich bin in der Lage, die Determinante richtig zu berechnen, außer für das Zeichen. Je nach Verschwenkung bekomme ich die Hälfte der Zeit falsch angezeigt. Hat jemand einen Vorschlag, wie man das Zeichen jedes Mal richtig macht? Danke im Voraus.Boost-Bibliothek, wie Determinante von lu_factorize() erhalten?
Hier habe ich meinen besten Schuss bei der Berechnung der Determinante eingefügt.
T determinant = 1;
for(int i = 0; i < A.size1(); i++)
{
determinant *= A(i,i);
}
Beenden Sie meinen Teil des Codes.
// create identity matrix of "inverse"
inverse.assign(ublas::identity_matrix<T>(A.size1()));
// backsubstitute to get the inverse
lu_substitute(A, pm, inverse);
return true;
}