=====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)""-1"" 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)""-1"" 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""T"" x A)""-1"" x A""T"" %%(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}}