Tridiagonalgestalt per HH < Numerik < Hochschule < Mathe < Vorhilfe
|
Guten Abend!
Und zwar geht es um ein Programm, welches die Eigenwerte der nxn-Hilbertmatrix mittels QR-Algorithmus für n=4,10,100 iterativ bestimmt.
Sprich: Ich bringe meine Matrix A ueber Householder-Transformationen auf Tridiagonalgestalt und lasse dann ueber Givens-Rotationen die Eigenwerte iterieren.
Mein Problem steckt im ersten Schritt: Bringe die Hilbertmatrix auf Tridiagonalgestalt!
Und zwar bekomme ich für große n (schon ab n=50 geht es schief) in meiner Tridiagonalmatrix ein Überlauf und weiß nicht, wie ich das ganze verhindern kann.
Hinter folgendem Link ist der komplette Quellcode:
http://pastebin.com/FHNWC7cR
Der Householder-Part ist Zeile 45 bis 70. Der Überlauf wird wohl in Zeile 57 passieren im Quotienten.
Die Einträge der Hilbertmatrix werden wohl so klein, dass irgendwann "durch Null geteilt wird". Aber was macht man dagegen?
Eigentlich sollte doch machbar sein das in C so zu programmieren, dass man selbst Hilbertmatrizen für z.B. n=100 problemlos auf Tridiagonalgestalt bringen kann, ohne jetzt sowas verrücktes wie Ähnlichkeitstransformationen auf die Matrix im vornherein anzuwenden um die "kleinen" Werte loszuwerden.
Ich würde mich um Hilfe sehr freuen!
Liebe Grüße, #!
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:20 Mi 23.11.2011 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|