Реализация метода исключения Гаусса-Джордана в Delphi

Это моя домашняя работа из моей школы по устранению Гаусса-Джордана в Дельфах, но... У меня тут есть проблемы...

Я сделал так:

procedure TForm1.Button3Click(Sender: TObject);
var
  n,i,j,k,bar,kol:integer;
  a:array [1..100,1..100]of real;
  x:array [1..100]of real;
  faktor:real;
begin
  memo1.Clear;
  n:=stringgrid2.RowCount-1;
  kenalmatriks;
  StringGrid2.RowCount := baris;
  StringGrid2.ColCount := kolom;

  for i:=1 to n do
  begin
    for j:=1 to n+1 do
    begin
      a[i,j]:=strtofloat(stringgrid1.cells[j,i]);
    end;
  end;

  for k:=1 to n do
  begin
    faktor:=a[k,k];
    for j:=1 to n+1 do
    begin
      a[j,k]:=a[j,k]/faktor;
    end;
    for i:=1 to n do
    begin
      if i<>k then
      begin
        faktor:=a[i,k];
        for j:=1 to n+1 do
        begin
          a[i,j]:=a[i,j]-faktor*a[k,j];
        end;
      end;
    end;
  end;

  for bar:=1 to n do
  begin
    for kol:=1 to n+1 do
    begin
      stringgrid2.cells[kol,bar]:=floattostr(a[bar,kol]);
    end;
  end;
end;

Результат должен выглядеть так:

1   0   0   2
0   1   0   7
0   0   1   -3

Но мой

--   --   --   --
--   1    0    15.33
--   0    1    2

Я надеюсь, что я могу закончить это...:(кто-нибудь... пожалуйста, помогите...

1 ответ

Отказ от ответственности: я ничего не знаю о ликвидации Гаусса-Иордана и никогда не слышал об этом.

Ответ ясен, хотя!

Либо ваша математика выключена, либо вы набираете неправильные цифры.

Как было предложено Мануэллом в первом комментарии к вашему посту, вам нужно посмотреть, какие цифры используются.

Простой способ отладки в консоли, который я использую: writeln('whatever variable: ' + VARIABLE),

Вы можете использовать MemoList если вы находитесь в разработке GUI, чтобы сделать то же самое. Вы будете удивлены результатами иногда.

Также используйте правильные функции для того, что вы хотите floatToStr а также strToFloat не то, что вы хотите, вероятно.

Редактировать:

Посмотрел исключение Гаусса-Джордана, также известное как сокращение строк, и оказалось, что это алгебра простых матриц.

Я никогда не знал, что это то, что называют вероятным, потому что, хотя и приписывается Гауссу, это было уже известно китайским математикам в 179 году нашей эры.

Хороший пример можно найти здесь: http://www.youtube.com/watch?v=Xc37YM59vVA

Хороший пример в Delphi, хотя и написан в более ранней версии: язык программирования Delphi-3, с исходным кодом находится здесь

Другой пример, но имеет гораздо больше, чем исключение Гаусса, так что вы должны посмотреть на код можно найти здесь

Вот пример на C++

Так что теперь я уверен, что вы решили это или потеряли свой логин для SO. Удачи и наслаждайтесь процессом, так как это лучшая часть.

Другие вопросы по тегам