QR-Zerlegung mittels HH-Transformation

Neue Frage »

ThTs Auf diesen Beitrag antworten »
QR-Zerlegung mittels HH-Transformation
Ich rechne für eine baldige Numerik-Prüfung gerade alte Klausuraufgaben durch. Bei der QR-Zerlegung versage ich noch etwas. Eventuell liegt es nur daran, dass ich der hohen Verlockung für Folgefehler zum Opfer falle, vielleicht hab ich aber auch einen richtigen Denkfehler dabei.

Hier mal die konkrete Aufgabe und meine Rechenweise:



1. Schritt









2. Schritt:








ergibt dann kein vernünftiges Ergebnis mehr.
Mein Taschenrechner (TI-89 Titanium) gibt während dessen ein Ergebnis für die QR-Zerlegung aus, dass mich denken lässt, das oben dann doch ein bischen mehr falsch ist, einfach schon, weil die Zahlen "hübscher" sind. Leider gibt er mir dabei keine Zwischenwerte aus, sondern nur Q und R. Hier die Ergebnisse meines Taschenrechners:




Kann das jemand nachvollziehen und mir eventuell sagen, was ich oben falsch gemacht habe?
tigerbine Auf diesen Beitrag antworten »
RE: QR-Zerlegung mittels HH-Transformation
Hallo,

zum Nachrechnen habe ich leider keine Zeit. Vielleicht findest du so selbst deinen Fehler. Wink

Theorie:

[WS] Lineare Ausgleichprobleme und ff.

Programm:
[WS] - Programmsammlung Numerik

Lösung mir Rechenschritten:

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:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
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: [-10,-16,29;11,-7,14;2,2,4.25]

A0 =

  Columns 1 through 2 

 -10.00000000000000 -16.00000000000000
  11.00000000000000  -7.00000000000000
   2.00000000000000   2.00000000000000

  Column 3 

  29.00000000000000
  14.00000000000000
   4.25000000000000

 
Durchgang 1 
================

x =

   -10
    11
     2


signx =

    -1


e1 =

     1
     0
     0


u =

   -25
    11
     2


beta =

   0.00266666666667

 

H =

  Columns 1 through 2 

  -0.66666666666667   0.73333333333333
   0.73333333333333   0.67733333333333
   0.13333333333333  -0.05866666666667

  Column 3 

   0.13333333333333
  -0.05866666666667
   0.98933333333333


Qk =

  Columns 1 through 2 

  -0.66666666666667   0.73333333333333
   0.73333333333333   0.67733333333333
   0.13333333333333  -0.05866666666667

  Column 3 

   0.13333333333333
  -0.05866666666667
   0.98933333333333


Ak =

  Columns 1 through 2 

  15.00000000000000   5.80000000000000
   0.00000000000000 -16.59200000000000
                  0   0.25600000000000

  Column 3 

  -8.50000000000000
  30.50000000000000
   7.25000000000000

 
Durchgang 2 
================

x =

 -16.59200000000000
   0.25600000000000


signx =

    -1


e1 =

     1
     0


u =

 -33.18597481015323
   0.25600000000000


beta =

   0.00181591281844

 

H =

  -0.99988099233753   0.01542728628486
   0.01542728628486   0.99988099233753


Qk =

  Columns 1 through 2 

   1.00000000000000                  0
                  0  -0.99988099233753
                  0   0.01542728628486

  Column 3 

                  0
   0.01542728628486
   0.99988099233753


Ak =

  Columns 1 through 2 

  15.00000000000000   5.80000000000000
  -0.00000000000000  16.59397481015323
   0.00000000000000  -0.00000000000000

  Column 3 

  -8.50000000000000
 -30.38452244072944
   7.71966942613535

 
 
Die QR-Zerlegung mit Householder
--------------------------------

A =

  Columns 1 through 2 

 -10.00000000000000 -16.00000000000000
  11.00000000000000  -7.00000000000000
   2.00000000000000   2.00000000000000

  Column 3 

  29.00000000000000
  14.00000000000000
   4.25000000000000


Q =

  Columns 1 through 2 

  -0.66666666666667  -0.73118908954287
   0.73333333333333  -0.67815779293867
   0.13333333333333   0.07392241344829

  Column 3 

   0.14463080892057
  -0.04821026964019
   0.98831052762389


R =

  Columns 1 through 2 

  15.00000000000000   5.80000000000000
  -0.00000000000000  16.59397481015323
   0.00000000000000  -0.00000000000000

  Column 3 

  -8.50000000000000
 -30.38452244072944
   7.71966942613535

 


Lösung durch matlab

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:
[Q,R]=qr(A)

Q =

  Columns 1 through 2 

  -0.66666666666667  -0.73118908954287
   0.73333333333333  -0.67815779293867
   0.13333333333333   0.07392241344829

  Column 3 

   0.14463080892057
  -0.04821026964019
   0.98831052762389


R =

  Columns 1 through 2 

  15.00000000000000   5.80000000000000
                  0  16.59397481015324
                  0                  0

  Column 3 

  -8.50000000000001
 -30.38452244072946
   7.71966942613535

>> 
ThTs Auf diesen Beitrag antworten »

Besten Dank :-) Leider habe ich gerade festgestellt, dass ich mich ganz oben bei der Matrix A vertippt habe. Die sollte eigentlich so aussehen:



Ich habe kein matlab, aber habe mir den Quellcode mal angesehen und denke ich weiß wo mein Fehler war. Ich versuche das ganze nochmal Schritt für Schritt anhand des Quellcodes durchzurechnen und hoffe das ich dann auf das Ergebnis meines TI komme :-/
tigerbine Auf diesen Beitrag antworten »

Bei mir kommt da nicht das Gleiche raus.

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:
Q=[-2/3,-1/3,2/3;11/15,-34/75,38/75; 2/15, 62/75, 41/75]

Q =

  Columns 1 through 2 

  -0.66666666666667  -0.33333333333333
   0.73333333333333  -0.45333333333333
   0.13333333333333   0.82666666666667

  Column 3 

   0.66666666666667
   0.50666666666667
   0.54666666666667

>> R=[15,9,-17/2;0,30,-25/2;0,0,115/4]

R =

  Columns 1 through 2 

  15.00000000000000   9.00000000000000
                  0  30.00000000000000
                  0                  0

  Column 3 

  -8.50000000000000
 -12.50000000000000
  28.75000000000000

>> Q*Q'

ans =

  Columns 1 through 2 

   1.00000000000000   0.00000000000000
   0.00000000000000   1.00000000000000
  -0.00000000000000                  0

  Column 3 

  -0.00000000000000
                  0
   1.00000000000000

>> Q*R

ans =

  Columns 1 through 2 

 -10.00000000000000 -16.00000000000000
  11.00000000000000  -7.00000000000000
   2.00000000000000  26.00000000000000

  Column 3 

  29.00000000000000
  14.00000000000000
   4.25000000000000

>> 
ThTs Auf diesen Beitrag antworten »

Da habe ich wohl den Beitrag direkt darüber zu schnell editiert. Tut mir leid für die Verwirrung.

Ich rechne es jetzt nochmal richtig durch. Wenn ich dann immer noch nicht auf das richtige Ergebnis komme, melde ich mich noch einmal.
tigerbine Auf diesen Beitrag antworten »

Alles klar.
 
 
ThTs Auf diesen Beitrag antworten »

Der erste Schritt stimmt jetzt, beim zweiten muss ich mich aber irgendwo noch verhaspeln. Kannst du mir bitte noch den Matlab-Rechenweg für die korrigierte Matrix posten?

tigerbine Auf diesen Beitrag antworten »

Wenn du matlab hast, kannst du dir auch QRmitH.m herunterladen.

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:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:

>> 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: [-10,-16,29;11,-7,14;2,26,4.25]

A0 =

  Columns 1 through 2 

 -10.00000000000000 -16.00000000000000
  11.00000000000000  -7.00000000000000
   2.00000000000000  26.00000000000000

  Column 3 

  29.00000000000000
  14.00000000000000
   4.25000000000000

 
Durchgang 1 
================

x =

   -10
    11
     2


signx =

    -1


e1 =

     1
     0
     0


u =

   -25
    11
     2


beta =

   0.00266666666667

 

H =

  Columns 1 through 2 

  -0.66666666666667   0.73333333333333
   0.73333333333333   0.67733333333333
   0.13333333333333  -0.05866666666667

  Column 3 

   0.13333333333333
  -0.05866666666667
   0.98933333333333


Qk =

  Columns 1 through 2 

  -0.66666666666667   0.73333333333333
   0.73333333333333   0.67733333333333
   0.13333333333333  -0.05866666666667

  Column 3 

   0.13333333333333
  -0.05866666666667
   0.98933333333333


Ak =

  Columns 1 through 2 

  15.00000000000000   9.00000000000000
   0.00000000000000 -18.00000000000000
                  0  24.00000000000000

  Column 3 

  -8.50000000000000
  30.50000000000000
   7.25000000000000

 
Durchgang 2 
================

x =

 -18.00000000000000
  24.00000000000000


signx =

    -1


e1 =

     1
     0


u =

   -48
    24


beta =

    6.944444444444445e-004

 

H =

  -0.60000000000000   0.80000000000000
   0.80000000000000   0.60000000000000


Qk =

  Columns 1 through 2 

   1.00000000000000                  0
                  0  -0.60000000000000
                  0   0.80000000000000

  Column 3 

                  0
   0.80000000000000
   0.60000000000000


Ak =

  Columns 1 through 2 

  15.00000000000000   9.00000000000000
  -0.00000000000000  30.00000000000000
   0.00000000000000                  0

  Column 3 

  -8.50000000000000
 -12.50000000000000
  28.75000000000000

 
 
Die QR-Zerlegung mit Householder
--------------------------------

A =

  Columns 1 through 2 

 -10.00000000000000 -16.00000000000000
  11.00000000000000  -7.00000000000000
   2.00000000000000  26.00000000000000

  Column 3 

  29.00000000000000
  14.00000000000000
   4.25000000000000


Q =

  Columns 1 through 2 

  -0.66666666666667  -0.33333333333333
   0.73333333333333  -0.45333333333333
   0.13333333333333   0.82666666666667

  Column 3 

   0.66666666666667
   0.50666666666667
   0.54666666666667


R =

  Columns 1 through 2 

  15.00000000000000   9.00000000000000
  -0.00000000000000  30.00000000000000
   0.00000000000000                  0

  Column 3 

  -8.50000000000000
 -12.50000000000000
  28.75000000000000

 
Soll noch ein LGS gelöst werden? 0-nein, 1-ja: 0
>> A=[-10,-16,29;11,-7,14;2,26,4.25]

A =

  Columns 1 through 2 

 -10.00000000000000 -16.00000000000000
  11.00000000000000  -7.00000000000000
   2.00000000000000  26.00000000000000

  Column 3 

  29.00000000000000
  14.00000000000000
   4.25000000000000

>> [Q,R]=qr(A)

Q =

  Columns 1 through 2 

  -0.66666666666667  -0.33333333333333
   0.73333333333333  -0.45333333333333
   0.13333333333333   0.82666666666667

  Column 3 

   0.66666666666667
   0.50666666666667
   0.54666666666667


R =

  Columns 1 through 2 

  15.00000000000000   9.00000000000000
                  0  30.00000000000000
                  0                  0

  Column 3 

  -8.50000000000001
 -12.50000000000000
  28.75000000000000
ThTs Auf diesen Beitrag antworten »

Besten dank, jetzt hat alles gepasst :-)

Matlab hab ich leider nicht. In der Uni läuft auf den Rechnern nur Mathematica, aber damit konnte ich mich nie so richtig anfreunden. Wenn es nötig wurde, habe ich mir Programme dieser Art und Weise meist in Java geschrieben, aber in diesem Fall wäre die Gefahr, dass es in die Hose geht recht groß, wenn ich schon bei der manuellen Rechnung so große Probleme habe.
tigerbine Auf diesen Beitrag antworten »

Gut, dann: Problem gelöst! Auf zum nächsten Augenzwinkern
Neue Frage »
Antworten »



Verwandte Themen

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