LU-ZERLEGUNG mit partieller Pivotierung Matlab
Ich bin zu versuchen, mein eigenes LU-ZERLEGUNG mit partieller Pivotierung. Mein code ist unten und ist anscheinend gut funktioniert, aber für einige Matrizen gibt es unterschiedliche Ergebnisse beim Vergleich mit den built-in [L, U, P] = lu(A)
Funktion in matlab
Kann jemand erkennen, wo ist es falsch?
function [L, U, P] = lu_decomposition_pivot(A)
n = size(A,1);
Ak = A;
L = zeros(n);
U = zeros(n);
P = eye(n);
for k = 1:n-1
for i = k+1:n
[~,r] = max(abs(Ak(:,k)));
Ak([k r],:) = Ak([r k],:);
P([k r],:) = P([r k],:);
L(i,k) = Ak(i,k) / Ak(k,k);
for j = k+1:n
U(k,j-1) = Ak(k,j-1);
Ak(i,j) = Ak(i,j) - L(i,k)*Ak(k,j);
end
end
end
L(1:n+1:end) = 1;
U(:,end) = Ak(:,end);
return
Hier sind die beiden Matrizen habe ich getestet. Die erste ist die richtige, während die zweite hat einige Elemente invertiert.
A = [1 2 0; 2 4 8; 3 -1 2];
A = [0.8443 0.1707 0.3111;
0.1948 0.2277 0.9234;
0.2259 0.4357 0.4302];
UPDATE
Ich habe meinen code und korrigiert einige bugs, aber es gibt noch etwas fehlt mit die partielle Pivotierung. In der ersten Spalte die letzten beiden Zeilen sind immer invertiert (im Vergleich mit dem Ergebnis von lu() in matlab)
function [L, U, P] = lu_decomposition_pivot(A)
n = size(A,1);
Ak = A;
L = eye(n);
U = zeros(n);
P = eye(n);
for k = 1:n-1
[~,r] = max(abs(Ak(k:end,k)));
r = n-(n-k+1)+r;
Ak([k r],:) = Ak([r k],:);
P([k r],:) = P([r k],:);
for i = k+1:n
L(i,k) = Ak(i,k) / Ak(k,k);
for j = 1:n
U(k,j) = Ak(k,j);
Ak(i,j) = Ak(i,j) - L(i,k)*Ak(k,j);
end
end
end
U(:,end) = Ak(:,end);
return
InformationsquelleAutor BRabbit27 | 2013-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe vergessen, dass Wenn es eine swap in der matrix P ich hatte zu tauschen, auch die matrix L., So fügen Sie einfach die nächste Zeile nach nach dem vertauschen von P und alles funktioniert hervorragend.
Sollte nur nach
P([k r],:) = P([r k],:);
InformationsquelleAutor BRabbit27
Beide Funktionen sind nicht korrekt.
Hier ist die richtige.
InformationsquelleAutor panch
Meine Antwort ist hier:
InformationsquelleAutor Dr Karatay