Gauss-Jordan + Pivot < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hey!
Ich bin gerade dabei einen Gauß-Jordan-Algorithmus zu schreiben der ein Gleichungssystem Ax=b lösen kann.
Die Pivotsuche sowie das erzeugen einer unteren Dreiecksmatrix funktionieren.
Das Erzeugen der obereren Dreicksmatrix sowie die Division der Diagonalen durch das Pivotelement scheinen nicht zu funktionieren... trotz einigem ausprobieren schaffe ich es leider nicht die/den Fehler zu korrigieren.
Es wäre schön wenn ihr mal drüber schaun und mir sagen könntet woran es liegen kann.
Erstmal der Programmcode für die untere Dreiecksmatrix sowie die Division der Diagonalen (den Rest lasse ich mal weg, wenn gewünscht poste ich den natürlich auch ).
Code:
function [x,A1]=Gauss_Jordan(A,b)
A(abs(A)<1E-13*max(max(abs(A))))=0;
x=zeros(1,size(A,2)-1);
for i=size(A,1):-1:1
if i==size(A,1); x(i)=A(i,end);
[***] else x(i)=A(i,end)-A(i,i+1:end-1)*x(i+1:end)';
end
if 1E-13>abs(x(i)); x(i)= 0; %frei wählbar
else x(i)=x(i)/A(i,i);
end
end
x=(A(:,end)./diag(A))';
x=diag(A);i=1:min(size(A)-[0 [mm] 1]);A(i,:)=diag(x(i))\A(i,:);
[/mm]
A(isnan(A))=0;
x=A(:,end)';
end
x(isnan(x))=0;
if any(x==Inf | x==-Inf); error ('Gleichungssystem nicht lösbar!')
A1=A,b; x=[];
else A1=A(:,1:size(A,2)-1);
end;
end;
Es werden mir 2 verschiedene Warnings angezeigt.
warning #1: "variable 'x' not definied"
warnung #2: "Operands not real scalar" in der Zeile die ich mit einem [***] markiert habe.
Vielleicht weiß jemand von euch was ich falsch gemacht haben könnte..
Ich danke euch schon einmal im vorraus für eure Bemühungen!
Grüße vom
Frischling
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:20 Fr 22.01.2010 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|