• Keine Ergebnisse gefunden

Das lineare Ausgleichsproblem

N/A
N/A
Protected

Academic year: 2021

Aktie "Das lineare Ausgleichsproblem"

Copied!
11
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Die Q-R-Faktorisierung mit Hilfe der Householder-Transformation ist bei wxMaxima in dem package

“lapack” als Funktion “dgeqrf” implementiert, welches die Q- bzw. die R-Matrix in einer Liste zur¨uckgibt.

Sie ist numerisch etwas stabiler als das Gram-Schmidt Verfahren oder Givens-Rotationen (2 andere M¨oglichkeiten).

Zur Erinnerung: die Q-Matrix ist orthogonal also Qt=Q−1 und R besteht aus einer oberen Dreiecks- matrix und einer Nullmatrix, d.h. alle Elemente unterhalb der Hauptdiagonale verschwinden:

R=

a11 a12 a13 . . . a1n 0 a22 a23 . . . a2n 0 0 a33 . . . a3n ... ... . .. . .. ... 0 0 . . . 0 ann

0 . . . 0 ... ... ... ... ... 0 . . . 0

= Rˆ

0

wobei ˆReine obere Dreiecksmatrix ist

Nocheinmal die Ausgangssituation kurz zusammengefasst:

Gegeben ist ein (wom¨oglich) ¨uberbestimmtes Gleichungssystem

A·x=b mit A∈Rm×n∧m≥n, x∈Rn, b∈Rm, Rang(A) =n

Im allgemeinen wird es zu keiner eindeutigen L¨osung x f¨uhren (¨uberbestimmt), aber wir w¨aren schon mit der L¨osung des linearen Ausgleichsproblems zufrieden, n¨amlich wir finden einxmit der Eigenschaft

|A x−b|2→min

Weiter unten (nach Theorem 2) werden wir zeigen, dass die Q-R-Zerlegung genau so einxliefert.

Gelingt nun eine Q-R-Zerlegung vonA=Q·Rmit Q∈Rm×mundR∈Rm×n so ergibt sich:

Q·R x=b|Qt· ⇒I·R x=Qt·b⇒R x=Qt·b

Die letzte Gleichung ist aber leicht durch R¨ucksubstituierung zu l¨osen, also xn aus letzter Zeile, dann xn−1 aus vorletzter Zeile usw. bis schließlichx1 aus 1. Zeile.

Ubrigens ist die Q-R-Zerlegung insofern eindeutig, dass sie immer diegleiche Dreiecksmatrix ˆ¨ R liefert, also

A=Q·R= (Q1, Q2) Rˆ

0

=Q1

d.h.Q1ist eindeutigQ2 i.a. nicht. F¨ur diese Eindeutigkeit brauchen wir nur die positive Definitheit der Diagonalelemente von ˆR.

A=Q1R1=Q2R2⇒ R1tR1 =R1t Q1tQ1

R1=A1tA1=R2t Q2tQ2

R2= R2tR2 aus

R1tR1=R2tR2⇒ R2−1t

R1t=R2R1−1

auf der linken Gleichungsseite stehen untere Diagonalmatrizen, auf der rechten Seite obere Diagonal- matrizen - also m¨ussen sie Diagonalmatrizen sein. Seien αi die Diagonalelemente von R1 und βi die Diagonalelemente vonR2, dann ergibt obige Matrixmultiplikation

∀i∈ {1,2, . . . n} 1 βi

αii 1 αi

αii≥0

⇒↑ αii

(2)

F¨ur die letzte Behauptung haben wir herangezogen, dass die Inverse einer Dreiecksmatrix wieder eine Dreiecksmatrix vom gleichen Typ ist (Untergruppe) und beim Invertieren sich der Reziprokwert in der Hauptdiagonale ergibt, dies kann man leicht einsehen, wenn man sich die Inverse als Unbekannte darstellt:

A X =I⇒xii= 1 aii

Wir werden sehen, dass wir f¨ur eine erfolgreiche Zerlegung die AusgangsmatrixAnoch etwas ver¨andern m¨ussen (indem wir einige Zeilen vertauschen) - dies werden wir mit einer PermutationsmatrixPbesorgen, sodass das Problem sich dann so stellt:

P·A

| {z }

A0

P·x

| {z }

x0

=P·b

| {z }

b0

⇒R x0 =Qtb0

aus dem L¨osungsvektorx0l¨asst sich aber wieder leicht (P·Pt=I)xberechnen! Jetzt bleibt nur mehr zu zeigen, dass diese L¨osungxganz gut durch das Ausgangsgleichungssystem “laviert” - das ja im strengen Sinn widerspr¨uchlich ist, weil die Messwertebja mit Fehlern befaftet sind! Dazu benutzen wir folgendes Theorem 1. Ist Q orthogonal, Q∈Rn×n undu, v∈Rn⇒(Q u)·(Q v) =u·v

Beweis:

(Q u)·(Q v) = (Q u)t(Q v) =utQtQ

| {z }

I

v=u·v

Theorem 2. Ist Q orthogonal, Q∈Rn×n undu∈Rn⇒ |(Q u)|=|u|

wobei|.|die euklidische Norm ist.

Beweis: v:=uin Theorem1

Mit dieser Eigenschaft l¨asst sich jetzt das lineare Ausgleichsproblem umformen:

|A x−b|2=|Q R x−b|2

Qtist orthogonal

=|R x−Qtb|2=

R xˆ 0

− c

d

2

=|R xˆ −c|2+|d|2

Diese Summe wird offensichtlich ein Minimum, wenn wir das Dreieckssystem ˆR x−c= 0 l¨osen und der Wert des Minimums sind die Quadrate von (Qtb)j j ∈ {n+ 1, n+ 2, . . . m}. Mit variieren vonxl¨asst sich das Minimum nicht weiter verringern, weildnicht vonxabh¨angt.

In diesem Anhang versuchen wir die “blackbox”dgeqrf in eine “whitebox” zu verwandeln. Dazu werden wir uns etwas theoretisches R¨ustzeug zulegen und das ganze Verfahren dann inwxMaxima implementie- ren.

Definition. Seiw~ ∈Rn ein Einheitsspaltenvektor, d. h. es gilt w~t·w~ = 1.

Einen×nMatrixP mit der Eigenschaft

P =I−2w ~~wt pijij−2wiwj

heißt Housholder Matrix.

Beachte: W¨ahrendw~t·w~das innere Produkt darstellt (Zahl), istw ~~wtdas ¨außere Produkt (n×nMatrix).

(3)

Theorem 3. IstP eine Householder-Matrix⇒ P ist symmetrisch und orthogonal (P =Pt=P−1)

Beweis:

Pt= I−2w ~~wtt

=It− 2w ~~wtt (A·B)t=Bt·At

=I−2 w~tt

~

wt=P ⇒P ist symmetrisch

P·Pt

Pt=P

=↑ I−2w ~~wt

I−2w ~~wt

=I−4w ~~wt+ 4w ~~wtw ~~wt

=I−4w ~~wt+ 4w~ w~tw~

| {z }

=1

~

wt=I⇒P ist orthogonal

in Tensorschreibweise ist die Symmetrie eine Folge der Kommutativit¨at inRund der Symmetrie vonδij: pijij−2wiwj =pji

auch die Orthogonalit¨at ist relativ einfach zu beweisen:

pikpjk= (δik−2wiwk)(δjk−2wjwk) =δikδjk−2δjkwiwk−2δikwjwk+ 4wiwj wkwk

| {z }

1

ij

Theorem 4. SindA undB orthogonal⇒A·B ist orthogonal

Beweis: Wird dem Leser ¨uberlassen

Theorem 5. w~ ist ein Eigenvektor der Householder-Matrix P=I−2w ~~wt

Beweis:

P ~w= I−2w ~~wt

~

w=w~−2w~ w~tw~

| {z }

=1

=−w~ in Tensorschreibweise:

pijwj= (δij−2wiwj)wjijwj−2wi wjwj

| {z }

1

=−wi

Theorem 6. Jeder zu w~ orthogonale Vektor ~x ist ein Fixpunkt (Eigenvektor mit Eigenwert 1) der Householder-MatrixP =I−2w ~~wt

Beweis:

P ~x= I−2w ~~wt

~

x=~x−2w~ w~t~x

| {z }

=0

=~x in Tensorschreibweise:

pijxj = (δij−2wiwj)xjijxj−2wi wjxj

| {z }

0

=xi

(4)

Im Folgenden seiw:=w; wir lassen die Vektorpfeile weg, weil es nicht zu Verwechslungen f¨~ uhren kann.

Theorem 7. Seix, y ∈Rn und |x|=|y| und w= x−y

|x−y| der Householder-Matrix P =I−2w wt⇒ P x=y

Beweis:

P x=y⇔x−2 x−y

|x−y|

(x−y)t

|x−y| x=y⇔

⇔(x−y)−2(x−y)(x−y)tx

|x−y|2 = 0⇔

⇔ (x−y)

|x−y|2 |x−y|2−2(x−y)tx

= 0⇔

⇔ (x−y)

|x−y|2 (x−y)t(x−y)−2(x−y)tx

= 0⇔

⇔ (x−y)

|x−y|2

xtx−xty−ytx+ yty−

2xtx+ 2ytx

= 0

⇔ (x−y)

|x−y|2

−xty− ytx+

2ytx

= 0

Die letzte Zeile gilt wegen der Kommutativit¨at des skalaren Produkts~x·~y=~y·~x, die vorletzte wegen

|x| = |y|. Wenn die letzte Zeile also wahr ist, k¨onnen wir zur¨uckschließen auf die 1. Zeile - was die Behauptung ist!

In Tensorschreibweise:

δij−2 (xi−yi) (xj−yj) xkxk−2xkyk+ykyk

xj=yi⇒ mit xkxk =ykyk

2(xi−yi) (xkxk−xkyk) =

2(xi−yi) (xj−yj)xj

Die letzte Gleichheit folgt wieder aus der Kommutativit¨at des skalaren Produkts.

(5)

Wir haben nun ein Verfahren, um mit einer Householder-Matrix (symmetrisch und orthogonal) alle Komponenten bis auf eine zum Verschwinden zu bringen:

x= (1,1,3,3,4)t

P=Pt=P−1

−→↑ y= (y1,0,0,0,0)t

Nachdem die Normen der beiden Vektoren ¨ubereinstimmen m¨ussen, muss gelten: y1= 6.

F¨uhren wir das in wxMaxima durch:

(%i1) x:[1,1,3,3,4]$

(%i2) y:[6,0,0,0,0]$

(%i3) norm2(x):=sqrt(x . x)$

(%i4) w1:(x-y)/norm2(x-y);

(%o4) [− 5 2√

15, 1 2√

15, 3 2√

15, 3 2√

15, 2

√15]

(%i5) vec2Matrix(x):=block([l:length(x), m], m:zeromatrix(l,1),

for i thru l do m[i,1]:x[i], m

)$

(%i6) w:vec2Matrix(w1);

(%o6)

5

2 15 1 2 15 3 2 15 3 2 15

2 15

(%i7) w_t:transpose(w);

(%o7)

5

2 15

1 2 15

3 2 15

3 2 15

2 15

(%i8) outerPr:w . w_t;

(%o8)

5

12121141413

121 601 201 201 151

14 201 203 203 15

14 201 203 203 15

13 151 15 15 154

(6)

(%i9) I:diagmatrix(5,1)$

(%i10) P:I-2*outerPr;

(%o10)

1 6

1 6

1 2

1 2

2 3 1

6 29

30101101152

1

2101 10710325

1

2101103 10725

2

31522525 157

(%i11) transpose(P . vec2Matrix(x));

(%o11) 6 0 0 0 0

Den letzten Vektor haben wir transponiert, um Platz zu sparen. Hat doch super geklappt - nun weiter.

Da es bei Matrizenumformungen meist darum geht, Spaltenvektoren zu erzeugen, die bis auf die 1.

Komponente verschwinden, wird in der mathematischen Literatur obiges Theorem meist gleich mit y=−sgn(x1)|x|e1 wobeie1:= (1,0,0, . . . ,0)t

angegeben. Allerdings muss geltenx16= 0 (d.h. Hauptdiagonale besetzt). Es ist klar, dass|x|=|y|erf¨ullt ist, die Householder-Matrix ergibt sich dann

P =I− 2 vtv

|{z}

β

v vt mit v:=x−y=x+sgn(x1)|x|

| {z }

α

e1

Implementieren wir dieses Verfahren in wxMaxima und sehen wie es funktioniert:

(%i1) signValue(r) := block([s:sign(r)], /* sgn-Fkt wird erzeugt */

if s=’pos then 1 else if s=’zero then 0 else -1)$

ematrix(n,m,x,i,j) – erzeugt eine (n×m)-Matrix, die ¨uberall verschwindet, nur an der Position (i, j) stehtx

(%i2) unitVector(n) := ematrix(n,1,1,1,1)/* Einheitsvektor in x-Richtung */$

(%i3) householder(A) := block([m : length(A), alpha,v,beta, a:col(A,1)], alpha : signValue(A[1,1])*sqrt(a . a), v : a + alpha*unitVector(m),

beta : 2/(v . v),

diagmatrix(m,1) - beta*(v . transpose(v)))$

v=x+sgn(x1)|x|e1

(%i4) A:matrix([1,0], [1,0], [3,0], [3,0], [4,0])$

Der 2-te Spaltenvektor vonAist nur ein “dummy”

(7)

(%i5) P:householder(A)$

(%i6) P . A;

(%o6)

−6 0

0 0

0 0

0 0

0 0

P·Aliefert in der 1.-ten Spaltey=−sgn(x1)|x|e1= (−6,0,0,0,0)t

Die numerische Stabilit¨at des Algorithmus ist nat¨urlich verbesserbar - aber vernachl¨assigen wir das f¨urs erste.

Betrachten wir noch einmal die Matrixmultiplikation(mit der Einsteinschen Summationskovention: ¨uber alle mehrfach vorkommenden Indices wird summiert!)

cij:=aikbkj

umgedeutet auf Vektoren bedeutet dies:

cij

|{z}y

:= qik

|{z}

P

akj

|{z}x

F¨ur den j-ten Spaltenvektor der Matrix A gibt es eine Householder-MatrixP, sodass der j-te Spalten- vektor der Produktmatrix obige Eigenschaft (nur 1 Komponente ungleich 0) besitzt. Damit k¨onnen wir folgendes Verfahren durchf¨uhren:

1. Wir formen mit Hilfe des Backtracking Algorithmus (Anhang C) die Ausgangsmatrix A so um, dass die Hauptdiagonale besetzt ist. Dies muss m¨oglich sein, sonst w¨aren in einer Spalte nur Nul- len und das w¨urde bedeuten das der Rang nicht n sein kann! Um es am Anfang nicht gleich zu verkomplizieren, gehen wir davon ausAw¨urde diese Bedingung bereits erf¨ullen.

2. Wir wenden auf den 1. Spaltenvektor von A die Householder-Matrix Q1 an, sodass nur die 1.

Komponente nicht verschwindet (wie bei unserem oberen Beispiel).

3. Wir streichen von A1. Zeile und 1. Spalte und erhaltenA2

4. Wir wenden auf den 1. Spaltenvektor von A2 die Householder-Matrix Q2 an, sodass nur die 1.

Komponente nicht verschwindet.

5. Wir “bl¨ahen”Q2zur urspr¨unglichen Gr¨oße auf (ErgebnisQ02), sodass andere Spalten unbeeinflusst bleiben.

6. Wir gehen weiter bei Punkt 3) mit einem h¨oherem Index-Z¨ahler 7. Wir brechen ab, wenn wir bei der letzten Spalte angelangt sind

(8)

Wir haben also folgendes erreicht:

Q0nQ0n−1Q0n−1Q0n−2. . . Q02Q1

| {z }

Q

A=R=

a11 a12 a13 . . . a1n

0 a22 a23 . . . a2n

0 0 a33 . . . a3n

... ... . .. . .. ... 0 0 . . . 0 ann

0 . . . 0 ... ... ... ... ... 0 . . . 0

wobeiQals Produkt von orthogonalen Matrizen selbst orthogonal ist (Theorem 4), daher gilt A=QtR

Jetzt m¨ussen wir nur mehr Punkt 5) unseres Verfahrens n¨aher erl¨autern: das “Aufbl¨ahen” der Householder- Matrix. Dazu m¨ussen wir wissen, dass die Multiplikationsformel f¨ur Matrizen auch f¨ur die Unterteilung in Blockmatrizen gilt, also:

A11 A12 A21 A22

·

B11 B12 B21 B22

=

C11 C12 C21 C22

wobei Cij :=Aik·Bkj

wobei in der letzten Formel Einsteinsche Summationskovention gilt und das Multiplikationszeichen eine Matrixmultiplikation darstellt. Zeilen- und Spaltenanzahl der einzelnen Matrizen m¨ussen nat¨urlich derart sein, dass die Produkte existieren!

Zur¨uck zu unserem Verfahren: durch Streichen der linken Spalte und oberen Zeile ergibt sich z.B.: im vierten Schritt folgende Situation:

A11 A12

A21 Q4·A22

wobei A11 eine 3×3 (obere Dreiecks-)Matrix , A21 eine (m−3)×3 Null-Matrix,A12 eine 3×(n−3) Matrix undA22 eine (m−3)×(n−3) Matrix (wobei a11 nicht verschwinden darf!). Unser Verfahren liefertQ4 wir ben¨otigen aberQ04, welche bei MultiplikationA11, A12 undA21 unver¨andert l¨asst - dass l¨asst sich aber leicht mit folgender Matrix erreichen:

I 0 0 Q4

| {z }

Q04

·

A11 A12 0 A22

Ausrechnen ergibt obiges Ergebnis!

Also zusammengefasst: AusQ0i wirdQi indem man in der Hauptdiagonale soviele “1”-er hinzuf¨ugt, bis man die urspr¨ungliche Gr¨oße (m×m) erreicht hat - alles andere wird mit “0” aufgef¨ullt.

Wir berechnen mit diesem Verfahren ein ¨uberbestimmtes Gleichungssystem - wie immer mitwxMaxima:

(9)

Altbekanntes ....

(%i28) signValue(r) := block([s:sign(r)],

if s=’pos then 1 else if s=’zero then 0 else -1)$

(%i29) unitVector(n) := ematrix(n,1,1,1,1)$

(%i30) householder(A) := block([m : length(A),alpha,v,beta, a:col(A,1)], alpha : signValue(A[1,1])*sqrt(a . a),

v : a + alpha*unitVector(m), beta : 2/(v . v),

diagmatrix(m,1) - beta*(v . transpose(v)))$

Hier jetzt das Zur¨ucksetzen auf die urspr¨ungliche Gr¨oßesize,Mist dieQ-Matrix undsder “Schrumpfungsgrad”

der Matrix, es gilt: 0s < size

(%i31) setOrigSize(M,s, size):=block(

genmatrix(lambda([i,j], if (i>s and j>s) then M[i-s,j-s]

else if (i=j) then 1 else 0),size,size))$

Von der MatrixAwirdj−mal 1-te Zeile und 1-te Spalte gel¨oscht

(%i32) getSubMatrix(A,j):=block([M:A], for i thru j do M:submatrix(1,M,1), M)$

Matrixelemente die kleiner alsthresholdwerden, werden durch Null ersetzt!

(%i33) setZero(M):=block([mat:M, m:first(matrix_size(M)), n:second(matrix_size(M)), threshold:10^(-15)], for i thru m do

for j thru n do

if (abs(mat[i,j]) < threshold) then mat[i,j]:0, mat)$

Hier jetzt die Debugging-Version des rekursiven Householder-Algorithmus:

Input ist die bisherige “obere Dreiecksmatrix” R, in der recN rSpalten unterhalb der Hauptdiagonalen Null gesetzt sind,Qist das Produkt der einzelnen Householder-Matrizen,recN rHaltist ein “Breakpoint” (for de- bugging only), undorigSizeist die Dimension vonQ, obenm×mgenannt!

(%i34) getQR_debug(R,Q,recNr,recNrHalt,origSize):=block([subMat, q], if recNr < recNrHalt then block(

subMat:getSubMatrix(R, recNr), q: householder(subMat),

q: setOrigSize(q, recNr, origSize),

getQR_debug(q . R, Q . q, recNr+1, recNrHalt, origSize) )

else [Q,setZero(R)])$

Hier jetzt die eigentliche Q-R-Faktorisierung:R:=A,Q:=Iund recN rHalt:=alle n-Spalten vonA,origSize=m

(%i35) Q_R_Fact(A):=block([m:first(matrix_size(A)), n:second(matrix_size(A))], getQR_debug(A,diagmatrix(m,1),0, n, m))$

Hier eine Koeffizientenmatrix mit Rang 4,m= 5, n= 4

(10)

(%i36) A:matrix(

[2,1,0,0], [1,1,0,0], [0,0,1,1], [0,0,3,2], [0,0,0,1]

)$

Wir berechnenQundRund schauen unsRan(obere Dreiecksmatrix):

(%i37) [q,r]:float(Q_R_Fact(A))$

(%i38) r;

(%o38)

−2.23606797749979 −1.341640786499874 0.0 0.0

0.0 −.4472135954999579 0.0 0.0

0.0 0.0 −3.162277660168379 −2.213594362117866

0.0 0.0 0.0 1.048808848170151

0.0 0.0 0.0 0.0

Wir setzen den Ergebnisvektor~bso, dass sich ein L¨osungsvektor~x= (1,2,3,4)tergibt

(%i39) b:matrix([4],[3],[7],[17],[4])$

Durch “R¨uckw¨artseinsetzen” wird die L¨osung bestimmt:

(%i40) backwardSubstitution(r,b):=

block([cols:second(matrix_size(r)), x:zeromatrix(second(matrix_size(r)),1)], for c:cols thru 1 step -1 do x[c]:((b[c]-row(r,c) . x)/r[c,c]),

x)$

(%i41) solutionVec:backwardSubstitution(r, transpose(q) . b);

(%o41)

1.0 2.0

3.000000000000001 4.0

Jetzt wird der Ergebnisvektor abge¨andert, dass er widerspr¨uchlich wird:

(%i42) b:matrix([4.5],[3],[7.5],[16],[3.4])$

Neuer L¨osungsvektor wird bestimmt

(%i43) solutionVec:backwardSubstitution(r, transpose(q) . b);

(%o43)

1.5 1.5

2.972727272727274 3.681818181818181

Erf¨ullt dieser L¨osungsvektor dieNormalengleichung? (Theorie siehe unten im Text!)

(%i44) transpose(A) . b;

(11)

(%o44)

 12.0

7.5 55.5 42.9

Offensichtlich

(%i46) transpose(A) . (A . solutionVec);

(%o46)

12.0 7.5

55.50000000000001 42.9

Das lineare Ausgleichsproblem

Wir haben ein ¨uberbestimmtes lineares Gleichungssystem

aijxj=bi 1≤i≤m,1≤j ≤n, n≤m Wir suchen ˆxj, sodass die Summe der Residuenquadrate minimal wird:

ri=bi−aijxj S=riri→min Dazu muss der Gradient vonS verschwinden:

∂S

∂xj

= ∂ri

∂xj

·ri+ri· ∂ri

∂xj

= 2ri· ∂ri

∂xj

∂ri

∂xj=−aij

= 2 (bi−aikk) (−aij) = 0 Ausmultiplizieren f¨uhrt zu den Normalengleichungen

aijaikk=biaij in Matrixschreibweise AtA ~x=At~b Dies haben wir oben inwxMaxima durchgef¨uhrt!

Referenzen

ÄHNLICHE DOKUMENTE

2.. daß jede solche Parabel jede andere in diesem Punkt schneidet. Alle Schei- telpunkte dieser Parabeln sind Tiefpunkte. die Scheitelpunkte liegen auf der nach

Includes a choice bw different rules X → w – env yields the label of a node: variable X or terminal letter a – next = first-of-sequence ( depth-first left-to-right tree traversal ).

hohe Arbeitsleistungen hohes Bildungsniveau hohe Managementleistung hoher Technologiestand hohe Logistikleistung. hohe Kommunikationsleistung

Bringe die Br¨ uche auf einen gemeinsamen Nenner. Fasse so weit wie m¨

Bringe die Br¨ uche auf einen gemeinsamen Nenner. Fasse so weit wie m¨

Gegeben sind die Vektoren ~a, ~b, ~c im

Trage die 540 m so in die Tabelle ein, dass die Einer- Ziffer (hier 0) in der m-Spalte steht.. Schreibe die restlichen Ziffern in die

Nun h¨ atte ein bloßer Hinweis auf dieses fehlende Mittelglied das Problem der betreffenden ProbandInnen kaum gel¨ ost (bekanntermaßen erwiesen sich diese in den Interviews als