Givens-Householder < Sonstiges < Lineare Algebra < Hochschule < Mathe < Vorhilfe
|
Hallo,
Ich soll "einfach" die QR-Zerlegung mittels Givens-Rotation bzw. Householder-Spiegelung möglichst speicherökonomisch implementieren. Und zwar in C++.
Ich verstehe beide Verfahren eigentlich ganz gut..wüsste auch, worauf man achten müsste, aber mir fällt es schwer, ein Programm dafür zu entwickeln.
Z.B. bei Householder..
wenn ich eine Matrix A gegeben hätte, müsste ich die Euklidische Norm von der ersten Spalte, etwa [mm] a^{(1)} [/mm] bestimmen. dies dann mal den ersten Einheitsvektor und dann das wiederum addieren zu [mm] a^{(1)}..das [/mm] ergebnis nenn ich mal [mm] s^{(1)}.
[/mm]
dann müsste ich die Matrix [mm] Q_{v} [/mm] aufstellen. in der Vorlesung wurde gesagt, man solle diese nicht explizit aufstellen. wie soll man das denn dann im Programm verwenden?
Dann müsste ich [mm] Q_{v} [/mm] mal A nehmen..es enstehen nullen in der ersten Spalte mit Ausnahme des ersten Eintrags.
dann (um Speicher zu sparen) überschreibe ich die 1. spalte nun mit [mm] s^{(1)} [/mm] und speichere den diagonaleintrag seperat in einem Vektor ab.
und dann wiederholt sich das ja wieder..
Mein Problem ist nicht die Durchführung des Algorithmus, sondern eher die Implementierung..also wüsste nicht, wie ich jetzt konkret ein Programm schreiben müsste. worauf ich achten muss bzgl. Speicher, ist mir eigentlich klar.
Kann mir jemand helfen? Vllt lerne ich ja dann noch was in Sachen Programmierung :D
Danke schonmal
LG
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:20 Di 20.12.2011 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|