Registriert seit: 12. Jun 2007
9 Beiträge
|
Re: Determinanten Berechnung
30. Jun 2007, 17:47
Ok, hab den Quelltext jetzt mit ein paar Beschreibungen versehen. Hab vergessen zu erwähnen, dass die Determinante mit Hilfe der Entwicklung nach der ersten Zeile erfolgen soll.
Hoffe ihr habt jetzt etwas mehr Durchblick. falls ihr noch fragen habt oder mehr Hinweise benötigt sagt bescheid.
Delphi-Quellcode:
procedure TForm4.ButtonDetOnClick(Sender:Tobject);
var i,j,n:integer;
matrixA:T2DMatrix;
Begin {Liest zu berechnende Matrix ein und startet ersten Funktionsaufruf}
n:=SG1.ColCount;
SetLength(matrixA,n,n);
for i:= 0 to n-1 do
for j:= 0 to n-1 do
begin
matrixA[i,j]:=StrtoFloat(SG1.Cells[j,i]);
end;
EditDet.text:=FloatToStr(matrixdet(matrixA,n));
end;
function TForm4.MatrixDet(matrixN:T2DMatrix;n:integer):double; {Berechnet Determinante einer Matrix mit Entwicklung nach erster Zeile }
var matrizen:array of T2DMatrix; {Array enthält Hilfsmatrizen}
i,j,k,l:integer;
Begin
if n =2 then {wenn 2x2 Matrix, dann einfaches Berechnen, ansonsten rekursiver aufruf}
begin
result:= (matrixn[0,0]*matrixn[1,1])-(matrixn[1,0]*matrixn[0,1]);
end
else
begin
setlength(matrizen,n); {Dimension der MAtrix betimmt gleichzeitig Anzahl der
Hilfsmatrizen}
{Zuerst müsen Hilfsmatrizen eingelesen werden}
for i:= 0 to n-1 do {i= Index der Hilfsmatrix}
begin
l:=0; {l= zeilenindex der Hilfsmatrizen}
for k:= 0 to n-1 do {k= Spaltenindex der zu berechnenden Matrix (MatrixN)}
begin
if i <> k then
begin
for j:= 1 to n-1 do
begin
matrizen[i,j,k]:= matrixN[j,l]; {Nacheinander sollen alle Elemente
einer Spalte k (außer dem ersten) der zu berechnenden Matrix MatrixN in die Spalte l der i ten Hilfsmatrix eingelesen werden}
end;
end;
inc(l); {nach dem einlesen der Splate soll die nächste Spalte der
Hilfsmatrix betrachtet werden (l wird um eins erhöht)}
end;
end;
result:=0;
for i:= 0 to n-1 do
begin
result:=result + (intpower(-1,i)* matrixn[1,i]* matrixdet(matrizen[i],n-1));
{Die Determinante einer Matrix ist die Summe der Elemetne der ersten
Zeile multipliziert mit den Hilfsmatrizen und multipliziert mit
(-1) hoch i(alternierend)}
end;
end;
end;
|
|
Zitat
|