QR Zerlegung mittels ebenen Rotationen

Neue Frage »

BanachraumK_5 Auf diesen Beitrag antworten »
QR Zerlegung mittels ebenen Rotationen
Hallo habe ein Problem bzgl. der Givenstransformation. Habe schon einige Beispiele durchgerechnet und kam auch auf die richtige QR Zerlegung (ist ja bis auf Vorzeichen eindeutig). Beispielsweise diese Aufgabe http://www.matheboard.de/archive/389900/thread.html konnte ich sehr gut lösen und nachvollziehen.

Ich habe hier nun aber eine Aufgabe die ich ständig falschrechne und ich finde einfach den Fehler nicht. Da ich Montag Klausur habe wäre es sehr sehr nett wenn sich das mal jmd. anschaut:

Also gegeben sei



Wir wollen nun mit folgenden Formeln arbeiten:

und , sowie . Die Signum Funktion ändert bekanntlich das Vorzeichen. So eigentlich alles ganz einfach, es folgt leicht: und Es ergibt sich also die Matrix.






Mit Matrixmultiplikation folgt dann .

Als nächstes sehen wir sofort, dass sein muss, denn bzgl. der neuen Matrix


Nun müssen wir berechnen und erhalten wie man sofort an der Matrix ablesen kann sowie .

Wir berechnen nun wieder unser Matrixprodukt , also



So das ist zwar eine Rechtsdreiecksmatrix aber laut Musterlösung ist diese falsch!

Wenn ich desweiteren nun noch

berechne kommt ein falsches Q raus welches nicht einmal orthogonal ist und insgesamt sieht man dann das ich falsch liege.

Habe aber wie im verlinkten Beispiel alles sauber durchgerechnet also wo ist denn der Fehler??
Wenn ich Tigerbines Beispiel rechne klappts ja auch.
BanachraumK_5 Auf diesen Beitrag antworten »

EDIT:

Sry für c gilt
tigerbine Auf diesen Beitrag antworten »
RE: QR Zerlegung mittels ebenen Rotationen
Zum nachrechnen habe ich nicht die Zeit. Ich habe mal mein Programm gefüttert. Q ist dann auch orthogonal. Q' ist die transponierte in matlab. Vielleicht kannst du deinen Fehler so selbst finden.

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:
>> QRmitG
Es wird eine QR-Zerlegung mit Givens berechnet.
====================================================
---------------------------------
| p=sqrt(a(jj)²+a(i,j)²)     |
| c=a(j,j)/p                    |
| s=a(i,j)/p                    |
---------------------------------
 
Matrix A eingeben: [-3,2,0;4,-1,5;0,1,-1]

A0 =

    -3     2     0
     4    -1     5
     0     1    -1

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

Qk =

   -0.6000    0.8000         0
   -0.8000   -0.6000         0
         0         0    1.0000


Ak =

    5.0000   -2.0000    4.0000
         0   -1.0000   -3.0000
         0    1.0000   -1.0000

 

Qk =

     1     0     0
     0     1     0
     0     0     1


Ak =

    5.0000   -2.0000    4.0000
         0   -1.0000   -3.0000
         0    1.0000   -1.0000

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

Qk =

    1.0000         0         0
         0   -0.7071    0.7071
         0   -0.7071   -0.7071


Ak =

    5.0000   -2.0000    4.0000
         0    1.4142    1.4142
         0   -0.0000    2.8284

 
 
Die QR-Zerlegung mit Givens
--------------------------------

A =

    -3     2     0
     4    -1     5
     0     1    -1


Q =

   -0.6000    0.5657    0.5657
    0.8000    0.4243    0.4243
         0    0.7071   -0.7071


R =

    5.0000   -2.0000    4.0000
         0    1.4142    1.4142
         0   -0.0000    2.8284

>> Q*Q'

ans =

    1.0000    0.0000   -0.0000
    0.0000    1.0000         0
   -0.0000         0    1.0000

>>Q*R

ans =

   -3.0000    2.0000    0.0000
    4.0000   -1.0000    5.0000
         0    1.0000   -1.0000
BanachraumK_5 Auf diesen Beitrag antworten »

Hallo tigerbine,

danke ich sehe das schon in der ersten Transformation ein Vorzeichenfehler ist.

Da ich die Formeln aus deinem Posting entnommen habe frage ich mich nun ob sie wirklich stimmen. Komischerweise klappts für für funktioniert es nicht.
tigerbine Auf diesen Beitrag antworten »

Also die eigentliche Theorie steht hier:
[WS] Lineare Ausgleichprobleme

Ich meine nun auch, das Verfahren richtig programmiert zu haben. (aber wer weiß Augenzwinkern ) Hier die Rechnung aus dem Beispiel nochmal mit dem Programm. Wie auch im code stehen, arbeite ich nicht mit dem Betrag, sondern den Elementen von A. Da unterscheiden sich unsere Ansätze.

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:
>> QRmitG
Es wird eine QR-Zerlegung mit Givens berechnet.
====================================================
---------------------------------
| p=sqrt(a(jj)²+a(i,j)²)     |
| c=a(j,j)/p                    |
| s=a(i,j)/p                    |
---------------------------------
 
Matrix A eingeben: [1,5,4;-2,1,3;2,0,-2]

A0 =

     1     5     4
    -2     1     3
     2     0    -2

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

Qk =

    0.4472   -0.8944         0
    0.8944    0.4472         0
         0         0    1.0000


Ak =

    2.2361    1.3416   -0.8944
         0    4.9193    4.9193
    2.0000         0   -2.0000

 

Qk =

    0.7454         0    0.6667
         0    1.0000         0
   -0.6667         0    0.7454


Ak =

    3.0000    1.0000   -2.0000
         0    4.9193    4.9193
         0   -0.8944   -0.8944

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

Qk =

    1.0000         0         0
         0    0.9839   -0.1789
         0    0.1789    0.9839


Ak =

    3.0000    1.0000   -2.0000
         0    5.0000    5.0000
         0    0.0000    0.0000

 
 
Die QR-Zerlegung mit Givens
--------------------------------

A =

     1     5     4
    -2     1     3
     2     0    -2


Q =

    0.3333    0.9333   -0.1333
   -0.6667    0.3333    0.6667
    0.6667   -0.1333    0.7333


R =

    3.0000    1.0000   -2.0000
         0    5.0000    5.0000
         0    0.0000    0.0000
BanachraumK_5 Auf diesen Beitrag antworten »

Sry aber deine Rechnung bezüglich der Matrix

ist falsch!

Das Ergebnis welches dein Programm liefert also Q und R ergeben ausmultipliziert nicht A!


Zitat:
Wie auch im code stehen, arbeite ich nicht mit dem Betrag, sondern den Elementen von A. Da unterscheiden sich unsere Ansätze.

Ja das stimmt aber dein Ansatz ist für Matrizen mit leider falsch!
 
 
BanachraumK_5 Auf diesen Beitrag antworten »

Hey sry deine Rechnung stimmt doch, tut mir leid ich habe mich verrechnet das war das Problem.
tigerbine Auf diesen Beitrag antworten »

Null Problemo. Augenzwinkern

Viel Erfolg am Montag!
Neue Frage »
Antworten »



Verwandte Themen

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