Householdertransformation schlägt fehl

Neue Frage »

Duedi Auf diesen Beitrag antworten »
Householdertransformation schlägt fehl
Hallo ihr!
Programmiere gerade eine QR-Zerlegung mit Householderspiegelung und in einem Schritt scheint was nicht zu funktionieren (Werte gerundet, da in Scilab):



Ich möchte die erste Zeile zum Einheitsvektor machen:

Dann ist
und


Nun ist aber jetzt

Die erste Spalte ist jetzt aber alles Andere als Einheitsvektor verwirrt
Weiß jemand Rat?

Dank schonmal, Duedi
Quadratzahl-Jan Auf diesen Beitrag antworten »

Hi!
So wie ich die HHT kenne, müßte v = a_1 - ||a_1|| * (1,0,0) sein.
Hast du vergessen dieses Vielfache des Einheitsvektors abzuziehen ?
Oder ist das so eure Methode?

a_1 soll hier der erste Spaltenvektor der Matrix A sein, also a_1 = (0,1,2)
Duedi Auf diesen Beitrag antworten »

Genau, das müsste ich eigentlich abziehen, aber (bei uns) mit dem Signum des (1,1)-Eintrags von A gewichtet, was in dem Fall 0 ist.
Quadratzahl-Jan Auf diesen Beitrag antworten »

OK. Zur sicherheit: kann es sein, dass man Sign(0)=1 gesetzt hat? Meine mich an sowas erinnern zu können. Gucke aber noch mal weiter, gehe davon aus, dass es nicht das Problem löst.
(Du hast ja schon geschrieben, dass sign(0)=0. aber ein Versuch ist es wertsmile )
Duedi Auf diesen Beitrag antworten »

Tatsächlich, das löst einen Großteil der Probleme, vielen Dank!
(Sind nur noch ein paar Implementierungsfehler, die ich ausmerzen muss)
tigerbine Auf diesen Beitrag antworten »

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
>> QRmitH
Es wird eine QR-Zerlegung mit Householder berechnet.
====================================================
---------------------------
| H=I-ß*uu^T              |
| u=x+sign(x1)*||x||_2*e1 |
| ß=2/(u^Tu)              |
---------------------------
 
Matrix A eingeben: [0,-4/3;1,5/3;2,20/3]
A0 =
         0   -1.3333
    1.0000    1.6667
    2.0000    6.6667
 
Durchgang 1 
================
x =
     0
     1
     2
signx =
     0
e1 =
     1
     0
     0
u =
     0
     1
     2
beta =
    0.4000
 
H =
    1.0000         0         0
         0    0.6000   -0.8000
         0   -0.8000   -0.6000
Qk =
    1.0000         0         0
         0    0.6000   -0.8000
         0   -0.8000   -0.6000
Ak =
         0   -1.3333
   -1.0000   -4.3333
   -2.0000   -5.3333
 
Durchgang 2 
================
x =
   -4.3333
   -5.3333
signx =
    -1
e1 =
     1
     0
u =
  -11.2052
   -5.3333
beta =
    0.0130
 
H =
   -0.6306   -0.7761
   -0.7761    0.6306
Qk =
    1.0000         0         0
         0   -0.6306   -0.7761
         0   -0.7761    0.6306
Ak =
         0   -1.3333
    2.1828    6.8718
   -0.4851   -0.0000
 
 
Die QR-Zerlegung mit Householder
--------------------------------
A =
         0   -1.3333
    1.0000    1.6667
    2.0000    6.6667
Q =
    1.0000         0         0
         0    0.2425   -0.9701
         0    0.9701    0.2425
R =
         0   -1.3333
    2.1828    6.8718
   -0.4851   -0.0000
 
Soll noch ein LGS gelöst werden? 0-nein, 1-ja: 0
>> Q*R
ans =
         0   -1.3333
    1.0000    1.6667
    2.0000    6.6667
 
 
Duedi Auf diesen Beitrag antworten »

Hm ich schaue mir morgen mal an, warum das bei dir klappt und bei mir nicht. (Eigentlich habe ich es mit zum Laufen gebracht, jedenfalls sind die Ergebnisse von Maple gleich). Danke auf jeden Fall!
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »