Macierz odwrotna - kod nie działa prawidłowo

0

Czesc, mam problem z kodem procedury do odwracania macierzy. Kod dziala czesciowo dobrze, tzn jezeli macierz jest nxn to bledne wartosci pojawiaja sie tylko w elemencie [n,n-1] i [n,n]. Nie mam pojecia gdzie jest blad, jakby ktos mogl pomoc byloby super :)

 
procedure odwrotna(macierz1:macierz);
var macierz2,macierz3:macierz;
  i,j,k:integer;
  det:double;
begin
     if (wiersze1<>kolumny1) then writeln('Nie mozna odwracac macierzy o zadanych wymiarach')
     else
     begin
     wyznacznik(macierz1,det);
         if (det=0) then writeln('Nie istnieje macierz odwrotna dla macierzy osobliwej')
         else
         begin
              SetLength(macierz3,wiersze1,kolumny1);
              for i:=0 to wiersze1-1 do
              begin
                  for j:=0 to wiersze1-1 do
                  macierz3[i,j]:=macierz1[i,j];
              end;
              for i:= 0 to wiersze1-1 do
              begin
                  macierz3[i,i]:=1/macierz3[i,i];
                  for j:=0 to wiersze1-1 do
                  begin
                      if (j<>i) then
                      begin
                           macierz3[j,i]:= macierz3[j,i]*macierz3[i,i];
                           for k:=0 to wiersze1-1 do
                           begin
                               if (k<>i) then
                               begin
                                    macierz3[j,k]:= macierz3[j,k]-macierz3[j,i]*macierz3[i,k];
                                    if j=wiersze1-1 then
                                       macierz3[i,k] := -(macierz3[i,k]*macierz3[i,i]);
                               end;
                           end;
                      end;
                  end;
              end;
         end;
         writeln('Macierz odwrotna: ');
         wyswietl(macierz3,wiersze1,kolumny1);
         writeln();
     end;
end;    
0

Radziłbym wywalić i przerobić na metodę Gaussa, ponieważ samo liczenie wyznacznika dla macierzy 100x100 ... nie doczekasz się.

0

ale wyznacznik jest tu liczony tylko po to zeby sprawdzic czy to nie jest macierz osobliwa, w eliminacji gaussa to nie jest potrzebne?

0

Czy jest osobliwa - wyjdzie w trakcie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1