Wiki source for pinv
=====Die Pseudoinverse=====
Allgemeingültige Berechnung der Pseudoinversen: Die Matrix A wird adjungiert (also transponiert und komplex konjunngiert) und einmal invertiert. Der Rest ist dann drei Mal Matrizenmultiplikation.
{{lf code="A^{\sharp} = (A^{*} \cdot A)^{-1} \cdot A^{*}"}}
==a==Test mit Octave==a==
Generiere eine Matrix A mit 4x3 Elementen des komplexen Körpers (mit kompl. Zahlen)
%%(matlab)
A=rand(4,3)+1i*rand(4,3)
%%
Prüfe vorher ob A aus linear unabhängigen Vektoren besteht.
Bilde die Pseudoinverse
%%(matlab)
Api = inv(A'*A)*A'
%%
oder so ;)
%%(matlab)
Api = pinv(A)
%%
==a==Anwendung==a==
Least-Squares-Fit mit der Pseudoinversen
Betrachtet wird die Funktion
ys= 5*x.^2 + 7*x - 50 + .5*exp(x)
im Intervall [-10,8]
%%(matlab)
clc
x=-10:.5:8;
x=x';
ys= 5*x.^2 + 7*x - 50 + .5*exp(x);
y = ys + randn(size(ys))*20; % Rauschen hinzufügen
plot(x,y,'x');
grid;
o=ones(size(x));
A = [ x.^2 x o exp(x) ]; % Die Theoretisch angenommene Funktion y=f(x)
b=pinv(A)*y %Lösungdes Gleichungsystems
yp = b(1)*x.^2 + b(2)*x + b(3) + b(4)*exp(x); % Die Lösung
hold on
plot(x,ys,'y');
plot(x,yp,'r');
legend('Data points','Original function','Fitted function')
hold off
%%
{{image src="images/pinv1.png"}}
%%
b =
4.97414
7.55254
-50.54712
0.50782
%%
==a==Vereinfachungen der Berechnung für besondere Matrizen==a==
mit [[Octave]]-Beispielen
Allgemeingültige Berechnung der Pseudoinversen: Die Matrix A wird adjungiert (also transponiert und komplex konjunngiert) und einmal invertiert
(A* x A)""<sup>-1<sup>"" x A*
%%(matlab)
A=rand(4,3)+1i*rand(4,3)
Ai1 = inv(A'*A)*A' % Zu Fuß
Ai2 = pinv(A)
norm(Ai1-Ai2,2) % Vergleiche den Fahler
%%
Vereinfachung für quadratische Matrizen NxN
(A x A)""<sup>-1<sup>"" x A
%%(matlab)
A=rand(4,4)+1i*rand(4,4)
Ai1 = inv(A*A)*A % Zu Fuß
Ai2 = pinv(A)
norm(Ai1-Ai2,2) % Vergleiche den Fahler
%%
Vereinfachung für Matrizen mit rein reelen Koeffizienten
(A""<sup>T<sup>"" x A)""<sup>-1<sup>"" x A""<sup>T<sup>""
%%(matlab)
A=rand(4,3)
Ai1 = inv(A.'*A)*A.' % Zu Fuß
Ai2 = pinv(A)
norm(Ai1-Ai2,2) % Vergleiche den Fahler
%%
----
Siehe auch {{backlinks}}
Allgemeingültige Berechnung der Pseudoinversen: Die Matrix A wird adjungiert (also transponiert und komplex konjunngiert) und einmal invertiert. Der Rest ist dann drei Mal Matrizenmultiplikation.
{{lf code="A^{\sharp} = (A^{*} \cdot A)^{-1} \cdot A^{*}"}}
==a==Test mit Octave==a==
Generiere eine Matrix A mit 4x3 Elementen des komplexen Körpers (mit kompl. Zahlen)
%%(matlab)
A=rand(4,3)+1i*rand(4,3)
%%
Prüfe vorher ob A aus linear unabhängigen Vektoren besteht.
Bilde die Pseudoinverse
%%(matlab)
Api = inv(A'*A)*A'
%%
oder so ;)
%%(matlab)
Api = pinv(A)
%%
==a==Anwendung==a==
Least-Squares-Fit mit der Pseudoinversen
Betrachtet wird die Funktion
ys= 5*x.^2 + 7*x - 50 + .5*exp(x)
im Intervall [-10,8]
%%(matlab)
clc
x=-10:.5:8;
x=x';
ys= 5*x.^2 + 7*x - 50 + .5*exp(x);
y = ys + randn(size(ys))*20; % Rauschen hinzufügen
plot(x,y,'x');
grid;
o=ones(size(x));
A = [ x.^2 x o exp(x) ]; % Die Theoretisch angenommene Funktion y=f(x)
b=pinv(A)*y %Lösungdes Gleichungsystems
yp = b(1)*x.^2 + b(2)*x + b(3) + b(4)*exp(x); % Die Lösung
hold on
plot(x,ys,'y');
plot(x,yp,'r');
legend('Data points','Original function','Fitted function')
hold off
%%
{{image src="images/pinv1.png"}}
%%
b =
4.97414
7.55254
-50.54712
0.50782
%%
==a==Vereinfachungen der Berechnung für besondere Matrizen==a==
mit [[Octave]]-Beispielen
Allgemeingültige Berechnung der Pseudoinversen: Die Matrix A wird adjungiert (also transponiert und komplex konjunngiert) und einmal invertiert
(A* x A)""<sup>-1<sup>"" x A*
%%(matlab)
A=rand(4,3)+1i*rand(4,3)
Ai1 = inv(A'*A)*A' % Zu Fuß
Ai2 = pinv(A)
norm(Ai1-Ai2,2) % Vergleiche den Fahler
%%
Vereinfachung für quadratische Matrizen NxN
(A x A)""<sup>-1<sup>"" x A
%%(matlab)
A=rand(4,4)+1i*rand(4,4)
Ai1 = inv(A*A)*A % Zu Fuß
Ai2 = pinv(A)
norm(Ai1-Ai2,2) % Vergleiche den Fahler
%%
Vereinfachung für Matrizen mit rein reelen Koeffizienten
(A""<sup>T<sup>"" x A)""<sup>-1<sup>"" x A""<sup>T<sup>""
%%(matlab)
A=rand(4,3)
Ai1 = inv(A.'*A)*A.' % Zu Fuß
Ai2 = pinv(A)
norm(Ai1-Ai2,2) % Vergleiche den Fahler
%%
----
Siehe auch {{backlinks}}