-3

这是我学校的作业,在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

我希望我能完成这个...... :(任何人......请帮助......

4

1 回答 1

1

免责声明:我对 Gauss-jordan 消除一无所知,也从未听说过。

不过答案很明确!

要么你的数学错了,要么你抓住了错误的数字。

正如 manuell 在您帖子的第一条评论中所建议的那样,您需要查看正在使用的数字。

我使用的一种在控制台中进行调试的简单方法是:writeln('whatever variable: ' + VARIABLE).

MemoList如果您在 GUI 开发中做同样的事情,您可以使用 a 。有时你会对结果感到惊讶。

还要为您想要的floatToStrstrToFloat不是您想要的使用正确的功能。

编辑:

查找 Gauss-jordan 消除也称为行缩减,结果证明是简单的矩阵代数。

我从来不知道这就是所谓的可能,因为尽管归因于高斯,但在公元 179 年中国数学家就已经知道了。

在这里可以找到一个很好的例子:http ://www.youtube.com/watch?v=Xc37YM59vVA

Delphi 中的一个很好的例子,虽然是用早期版本编写的:Delphi-3 编程语言,源代码可以在这里找到

另一个例子,但不仅仅是高斯消除,所以你必须看看代码可以在这里找到

是 C++ 中的一个示例

所以现在我确定您已经解决了它或丢失了您对 SO 的登录。祝你好运,享受这个过程,因为这是最好的部分。

于 2013-12-22T02:43:36.047 回答