Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Übergabe einer Matrix an Unterprogramm

  Alt 25. Aug 2011, 00:34
FredlFesl, TMat oder TMatrix, ist sowas von egal. Und die SetLength’s Null kann man sich nur bei lokalen Variablen schenken (ich schreib’s der Vollständigkeit halber gelegentlich dennoch hin).

swarley, wenn du die Variante möchtest, in der die Lösung auf der rechten Seite steht, dann kenn ich das so:

Delphi-Quellcode:
procedure Inverse(const N: integer; var A: TMatrixGauss);
var
  i,j,k : Integer;
begin
  for I:= 0 to N-1 do
    for J:= I+1 to N+N-1 do
    begin
      A[I, J]:= A[I, J] / A[I, I]; // Matrix singulär, falls A[I, I] = 0
      for K:= 0 to N-1 do
        if K <> I then A[K, J]:= A[K, J] - A[K, I] * A[I, J];
    end;
end;

procedure TForm1.Button11Click(Sender: TObject);
var
  A: TMatrixGauss;
  I, J, N: integer;
begin
  N:= 3;
  A[0, 0]:= 1; A[0, 1]:= 2; A[0, 2]:= 0; A[0, 3]:= 1; A[0, 4]:= 0; A[0, 5]:= 0;
  A[1, 0]:= 2; A[1, 1]:= 3; A[1, 2]:= 0; A[1, 3]:= 0; A[1, 4]:= 1; A[1, 5]:= 0;
  A[2, 0]:= 3; A[2, 1]:= 4; A[2, 2]:= 1; A[2, 3]:= 0; A[2, 4]:= 0; A[2, 5]:= 1;
  Inverse(N, A);
  for I:= 0 to N-1 do
    for J:= N to N+N-1 do ShowMessage (FloatToStr(A[I, J]));
end;
  Mit Zitat antworten Zitat