Verfasst am: 05.01.2011, 11:33
Titel: Pivotisierung und Gauß-Jordan
Hallo,
Hab ein kleines Problem ich
versteh nicht ganz diesen Algorithmus, vieleicht könnte mir jemand den source code erklären. Und wie könnte ich eine Spaltenpivotisierung in den Code Implementieren?
Es wird die erweiterte Koeffizientenmatrix übergeben.
ich kenne den genannten Algorythmus nicht aber was verstehst du am Code nicht? Weißt du nicht was "size" macht? das gibt die die Spalten und Zeilenanzahl deiner Matrix AB zurück.
Weißt du denn was der Gauß-Jordan Algo machen soll? oder scheitert es schon an der Theorie zu diesem Source code?
_________________
for k = 1:n % Schleife über alle Zeilen for i = 1:n % Zweite Schleife über alle Zeilen if i ~= k % Wenn Zählvariable i ungleich Zählvariable k, damit wird sichergestellt, dass die Hauptdiagonale nicht eliminiert wird.
term = AB(i,k)/AB(k,k); % Im ersten behandelten Fall liegt vor: i = 2, k = 1 -> AB(i, k) = 4 und AB(k,k) = 1 => term = 4 for j = k:m
AB(i,j) = AB(i,j) - term*AB(k,j); %Im ersten behandelten Fall liegt vor: i = 2, j = k = 1 -> AB(i, j) = 4, AB(k,j) = 1 => neue AB(i,j) = 4 - 4*1 = 0 end end end
%Wenn es bis hier durchgelaufen ist, dann sieht AB wie folgt aus:
%
%AB =
% 1 1 1 0 % 0 -2 -3 1 % 0 -6 -8 3
temp = AB(k,k); % k = 1; AB(k, k) = 1 for j = k:m
AB(k,j) = AB(k,j)/temp; % AB(k,j) = 1, temp = 1 => 1 end end
Also die erste innere Schleife wird geschaut dass in der aktuell zu behandelden Spalte alle Werte ausser das der Hauptdiagonalen auf 0 gerechnet werden.
In der zweiten inneren Schleife wird geschaut dass der zu verrechnende Faktor in die restlichen Zahlen der Zeile einfließt.
Lass mal folgendes laufen und schau dir an ob du Schritt für Schritt
mitkommst.
for k = 1:n
for i = 1:n
if i ~= k
AB(i,k)
AB(k,k)
term = AB(i,k)/AB(k,k) for j = k:m
AB(i,j)
AB(k,j)
AB(i,j) = AB(i,j) - term*AB(k,j) end end end
temp = AB(k,k) for j = k:m
AB(k,j)
AB(k,j) = AB(k,j)/temp
end end
x = AB(:,m)
Mir ist jetzt eigentlich alles klar. Nur versteh ich noch nicht ganz für was das temp gut ist?
Und wie könnte ich noch die Spaltenpivotisierung implementieren?
Ohne die Verwendung von "temp", würde der Wert von AB(k,k) ja in der ersten Iteration überschrieben werden.
Gruß, Jan
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.