ich kompilieren und zu versuchen, die UMfPackLU<SparseMatrix<>>
Routine aus Eigen 3.2.9
und UMFPACK v4.5
Bibliotheken mit TDM-GCC 5.1.0
auf Win64
-Plattform zu laufen. Aber ich bekomme Appcrash
mit exception code c0000005
.APPCRASH auf Lauf UmfPackLU <> mit Eigen-Bibliothek
Was ich brauche, zu implementieren, ist die folgende:
_ _ _ _
A = | P |, B = | R |, where P and Q are sparse and Z is 0 with 3 cols
| Q | | Z |
|_ _| |_ _|
X = A\B;
Was ich tue (Auszug nur) ist folgende:
#define num_t double
...
SparseMatrix<num_t,RowMajor> A(P.rows()+Q.rows(), P.cols());
A.topRows(P.rows()) = P;
A.bottomRows(Q.rows()) = Q;
Matrix<num_t, Dynamic, 3> B(P.rows()+Q.rows(), 3);
B.topLeftCorner(P.rows(), 3) = R;
B.bottomLeftCorner(Q.rows(), 3) = S;
UmfPackLU<SparseMatrix<num_t>> solver(A.transpose()*A);
auto AtB = A.transpose()*B;
X.col(0) = solver.solve(AtB.col(0)); // @@@ segmentation error here @@@
X.col(1) = solver.solve(AtB.col(1));
X.col(2) = solver.solve(AtB.col(2));
Notiere die SparseMatrix<>
in RowMajor
Format ist.
Beim Debuggen mit gdb
: Ich bekomme Program received signal SIGSEGV, Segmentation fault.
an der Zeile wie oben markiert.
Statt UmfPackLU<SparseMatrix<>>
, die Lösung mit SimplicialLLT<SparseMatrix<>>
, SimplicialLDLT<SparseMatrix<>>
oder CholmodDecomposition<SparseMatrix<>>
ordnungsgemäß funktioniert.
Vielen Dank im Voraus für jede Hilfe.
Sie könnten versuchen, zu Eigen v3.2.9 ersten – kangshiyin
@kangshiyin zu aktualisieren: Aktualisiert 3.2.9. Immer noch der gleiche Fehler. –
Win64 kann ein Problem sein. Wie wäre es mit LP64? – kangshiyin