Ребят, необходимо найти обратную матрицу методом Гаусса. Есть код (ниже). Помогите определить реализуется ли в данном коде метод Гаусса
http://http://ru.wikipedia.org/wiki/Обратная_матрица#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4_.D0.93.D0.B0.D1.83.D1.81.D1.81.D0.B0
У меня есть следующий код на Delphi:
| Код | var Form1: TForm1; kol: integer; obr: array[0..300, 0..300] of real;
implementation
{$R *.dfm}
procedure Obratis; var k, i, j: integer; b: array[0..300, 0..300] of real; begin for k:=0 to kol - 1 do begin for i:=0 to kol - 1 do for j:=0 to kol - 1 do begin if (i=k) and (j=k) then b[i,j] := 1/obr[i,j]; if (i=k) and (j<>k) then b[i,j] := -obr[i,j]/obr[k,k]; if (i<>k) and (j=k) then b[i,j] := obr[i,k]/obr[k,k]; if (i<>k) and (j<>k) then b[i,j] := obr[i,j] - obr[k,j] * obr[i,k]/obr[k,k]; end; for i:= 0 to kol - 1 do for j:= 0 to kol - 1 do obr[i, j]:= b[i, j]; end; end;
procedure TForm1.Button3Click(Sender: TObject); begin exit; end;
procedure TForm1.SpinEdit1Change(Sender: TObject); begin kol:= SpinEdit1.Value; StringGrid1.ColCount:= kol; StringGrid1.RowCount:= kol; StringGrid2.ColCount:= kol; StringGrid2.RowCount:= kol; end;
procedure TForm1.Button1Click(Sender: TObject); var i, j: integer; begin randomize; for i:= 0 to kol - 1 do for j:= 0 to kol - 1 do StringGrid1.Cells[i, j]:= IntToStr(random(100) - 50); end;
procedure TForm1.FormCreate(Sender: TObject); begin kol:= 1; end;
procedure TForm1.Button2Click(Sender: TObject); var i, j: integer; i1, j1: integer; begin i1:= 1; j1:= 1; try for i:= 0 to kol - 1 do for j:= 0 to kol - 1 do begin i1:= i; j1:= j; obr[i, j]:= StrToFloat(StringGrid1.Cells[j, i]); end; except ShowMessage('Ошибка при вводе числа в столбце ' + IntToStr(j1 + 1) + ' строке ' + IntToStr(i1 + 1) + '!'); exit; end;
Obratis; for i:= 0 to kol - 1 do for j:= 0 to kol - 1 do StringGrid2.Cells[i, j]:= FloatToStr(Round(1000*obr[j, i])/1000); end;
end.
|
M Alexeis | Модератор: используйте подсветку кода. |
|