GL lösen mit Cholesky < Lin. Gleich.-systeme < Numerik < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:31 Do 17.11.2005 | Autor: | marco_de |
Hallo, ich habe folgendes Problem:
ich soll ein Programm schreiben, dass sehr große Gleichen lösen soll. Da die Matrix immer pos.def. ist, soll das Gleichungssystem mit dem Cholesky-verfahren gelöst werden. zum testen habe ich mir mal eine 3x3 Matrix genommen und da Verfahren schriftlich getestet.
das Verfahren habe ich mit von folgender Seite genommen:
http://de.wikipedia.org/wiki/Cholesky-Zerlegung
ich habe die Matrix a mit
( 1; 1/2; 1/3)
(1/2; 1/3; 1/4)
(1/3; 1/4; 1/5)
und den vektor b mit (1; 2; 3)T
Zum Ablauf:
ich zerlege die Matrix a mit dem Choleskyverfahren ( siehe link ) und erhalte g.
g=
(1; 0; 0)
(1/2; 0.2886751346; 0)
(1/3; 0,02405626122; 0,2971702966)
mit: g*y=b erhalte ich y
(Rückwärtseinsetzen)
y=(1; 5,1961; 5,1878)T
danach erhalte ich mit gT*x=y mein gesuchtes x
(Vorwärtseinsetzen)
x=(-13.0916; 16,545; 17,457)T
die exakte Lösung wäre aber x=(-3; -12; 30)
ich frage mich, was ich falsch mache...
ist die matrix falsch, die ich hernehme?
ich habe es auch schon anderen frei gewählten Gleichungssystemen versucht, aber auch dort nie das richtige Ergebnis gehalten...
Wo liegt der Fehler?
Ich wäre froh, wenn mir hier jemand weiterhelfen könnte.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo marco_de,
Offenbar ist die Berechnung von G falsch da [mm]G*G^T\not= A[/mm] .
Zumindest bekomm ich da was anderes.
viele Grüße
mathemaduenn
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 22:21 Do 17.11.2005 | Autor: | marco_de |
Hallo,
erst einmal vielen Dank für diese schnelle Antwort.
ich habe bei mir folgendes heraus:
G*GT:
(1; 1/2; 1/3)
(1/2; 1/3; 0.1736)
(1/3; 0.1736; 0.1999)
in der tat ist das ergebnis G23 und G32 mit 0.1736 sehr weit von 0.25 entfernt. Das dürfte durch das abschneiden der Nachkommastellen ( ab 4.) eigentlich nicht so gravierend sein...
ist denn bei dir G*GT=A ?
|
|
|
|
|
Hallo Marco,
Das ist schon recht gravierend da ist nichts mehr mit Rundungsfehler. Da mußt Du nochmal die Berechnung von G überprüfen für [mm] g_{32} [/mm] bekomme ich [mm] \bruch{1}{\wurzel{12}} [/mm] . Und daraus resultierend natürlich auch für [mm] g_{33} [/mm] was anderes.
viele Grüße
mathemaduenn
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:23 So 20.11.2005 | Autor: | marco_de |
hi,
ich habe den fehler gefunden.
Ich habe mich verrechnet *schäm*
also der Algorithmus funktioniert!
...man sollte halt nicht nachts um 03.00 Uhr nach 12 Stunden arbeit noch mit Mathematik anfangen...
Danke!
|
|
|
|