Forum: PC-Programmierung Eigen Lib Cholesky Zerlegung


von Dennis (Gast)


Lesenswert?

Hallo Zusammen,

ich habe versucht eine Cholesky Zerlegung einer Matrix in C++ zu 
erstllen. Leider klappt es mit der Eigen Lib nicht ganz. Die Alglib 
liefert hingegen das richtige Ergebnis.

Meine Matrix ist:

156.25    0.0    0.0
   0.0 156.25    0.0
   0.0    0.0 0.2401

Als Ergebnis der Cholesky Zerlegung erwarte ich (die Werte 0.0 sind in 
der Regel Werte nahe 0):

12.5  0.0  0.0
 0.0 12.5  0.0
 0.0  0.0 0.49

Das Ergebnis welches ich bekomme ist (Werte auf und oberhalb der 
Diagonalen sind gerundet):

12.5    0.0    0.0
 0.0 156.25    0.0
 0.0    0.0 0.2401


Mein Code Sieht dazu so aus:
1
Matrix3d cholesky;
2
Matrix3d current_uncertainty;
3
4
current_uncertainty(0,0) = 156.25;
5
current_uncertainty(1,1) = 156.25;
6
current_uncertainty(2,2) = 0.2401;
7
8
cholesky = current_uncertainty.llt().matrixU();

Die verwendete Eigen Lib ist die Version 3.1.1 Release

Ich hoffe ihr könnt mir helfen...

Viele Grüße,
Dennis

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Wenn es eine Diagonalmatrix ist, dann nimm einfach die Quadratwurzeln 
der Hauptdiagonalelemente.

Und natürlich weiß hier jeder, was die "Eigen Lib" ist und was die 
"Alglib" ist und was "llt" macht etc.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.