Ing Mathematik: Numerisches Lösen von Ausgleichsproblemen

Aus testwiki
Zur Navigation springen Zur Suche springen

Vorlage:Navigation zurückhochvor buch


Ausgleichsgerade

Mit der Ausgleichsrechnung können überbestimmte Probleme gelöst werden. Z.B. ist der Ansatz bei der linearen Ausgleichsrechnung:

Ausgleichsgerade: f(x)=y=kx+d

r=i=0n(f(xi)yi)2=((kxi+d)yi)2=MIN!

Damit dies ein Extremum (genauer ein Minimum) wird, müssen die Ableitungen gleich 0 werden.

rk=0 und rd=0

rk=2i=0n((kxi+d)f(xi))xi=0

rd=2i=0n((kxi+d)f(xi))=0

Dies ergibt ein lineares Gleichungssystem (Unbekannte: k,d):

ki=1nxi2+di=1nxi=i=1nf(xi)xi

ki=1nxi+di=1n1n=i=1nf(xi)

Beispiel: Gegeben seien n Messdaten. Zu diesen ist eine Ausgleichsgerade (Regressionsgerade) zu legen. Die Summe der Fehlerquadrate soll minimal werden.


xi 1 2 3 4
yi 2 1 4 6

i=1nxi=1+2+3+4=10

i=1nxi2=1+4+9+16=30

n=4

i=1nf(xi)xi=21+12+43+64=40

i=1nf(xi)=2+1+4+6=13

(3010104)(kd)=(4013)

Daraus folgt:

k=1.5;d=0.5

y=1.5x0.5

Pseudoinverse und Singulärwertzerlegung

Die Pseudoinverse ist die Verallgemeinerung der inversen Matrix auf singuläre und nichtquadratische Matrizen. Die Bestimmung der Moore-Penrose-Inversen basiert auf der Singulärwertzerlegung. Die Bezeichnungen sind in der Literatur nicht einheitlich. Die folgende Darstellung hält sich in etwa an Vorlage:W und Burg, Haf, Wille, Meister: Seite 354ff.

Allgemeine oder generalisierte Inverse G von A:

  • AGA=A
  • GAG=G

Moore-Penrose-Inverse (Pseudoinverse) A:

  • AAA=A
  • AAA=A
  • AA und AA symmetrisch.

Orthogonale Normalform, Singulärwertzerlegung: Am×n, Dr×r sei eine Diagonalmatrix mit positiven Diagonalelementen, r=RangA, Um×m,Vn×n

A=U(D000)VT

Dann existiert exakt eine Moore-Penrose-Inverse:

A=V(D1000)UT

Lösungsmenge des linearen Ausgleichsproblems mit bm:

x=Ab+yAAy

Siehe auch Vorlage:W, Vorlage:W, Vorlage:W, Vorlage:W, Hanke-Bourgeois: Seite 107ff, Burg-Haf, Will, Meister: Seite 340ff, Knorrenschild: Seite 98ff, Singular Value Decomposition (SVD) in der SciPy-Dokumentation.

Beispiel - Moore-Penrose-Pseudoinverse mit SciPy:

import numpy as np
from scipy import linalg

A = np.array([[1, -2, 2, 1, 0],
             [-5, 1, 4, 9, 1],
             [0, 0, 1, 0, 2],
             [1, 2, 3, 1, 3]])

B = linalg.pinv(A)

print(B)
print("-"*50)
print(A@B@A)

Ausgabe:

[[ 1.58724277e-01 -7.18235194e-02 -3.62480762e-01  2.13988485e-01]
 [-2.29094226e-01  5.70027931e-05 -3.90982158e-01  2.68084136e-01]
 [ 1.67246195e-01  4.56022345e-04 -1.27857265e-01  1.44673089e-01]
 [ 4.85948811e-02  7.10254802e-02 -1.63769025e-01  3.28336088e-02]
 [-8.36230975e-02 -2.28011173e-04  5.63928633e-01 -7.23365445e-02]]
--------------------------------------------------
[[ 1.00000000e+00 -2.00000000e+00  2.00000000e+00  1.00000000e+00
  -2.91433544e-16]
 [-5.00000000e+00  1.00000000e+00  4.00000000e+00  9.00000000e+00
   1.00000000e+00]
 [ 3.94270120e-16  1.27561807e-15  1.00000000e+00 -3.98823769e-16
   2.00000000e+00]
 [ 1.00000000e+00  2.00000000e+00  3.00000000e+00  1.00000000e+00
   3.00000000e+00]]

Bei der Ausgabe der zweiten Matrix (ABA mit B=A) sind die Rundungsfehler zu beachten. So entspricht z.B. 3.94270120e-16 in etwa Null.

Gedruckte Werke (auszugsweise)

  • Burg, Haf, Wille, Meister: Höhere Mathematik für Ingenieure, Band I: Analysis. 9. Auflage, Vieweg+Teubner, 2011, ISBN 978-3-8348-1218-6
  • Hanke-Bourgeois: Grundlagen der Numerischen Mathematik und des Wissenschaftlichen Rechnens. 3. Aufl., Vieweg+Teubner, 2009, ISBN 978-3-8348-0708-3
  • Knorrenschild: Numerische Mathematik. 6. Auflage, Hanser, 2017, ISBN 978-3-446-45161-2


Vorlage:Navigation zurückhochvor buch