Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
Delphi 10.4 Sydney
|
AW: Übergabe einer Matrix an Unterprogramm
25. Aug 2011, 01: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;
|
|
Zitat
|