Arrays Gauss-Jordan消去法在Delphi中的实现

Arrays Gauss-Jordan消去法在Delphi中的实现,arrays,delphi,stringgrid,Arrays,Delphi,Stringgrid,这是我学校的家庭作业,在德尔福做高斯-乔丹消去法,但是…我这里有一些问题 我这样做: 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;

这是我学校的家庭作业,在德尔福做高斯-乔丹消去法,但是…我这里有一些问题

我这样做:

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
我希望我能完成这个…:(
任何人……请帮助……

免责声明:我对高斯-乔丹消去法一无所知,也从未听说过

答案很清楚

要么你的数学不及格,要么你抓错了数字

正如manuell在你文章的第一条评论中所建议的那样,你需要看看使用了哪些数字

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

如果您正在进行GUI开发,您可以使用
备忘录列表来做同样的事情。有时您会对结果感到惊讶

另外,为您想要的使用正确的函数
floatToStr
strToFloat
可能不是您想要的

编辑:

查一查高斯-乔丹消去法,也就是行归约法,结果证明它是一个简单的矩阵代数

我从来不知道这就是所谓的“可能”,因为尽管这是高斯的功劳,但它却是公元179年中国数学家的功劳

这里有一个很好的例子:

在Delphi中有一个很好的例子,虽然是用早期版本Delphi-3编程语言编写的,但有源代码

另一个例子,但有远远超过高斯消去,所以你要看的代码可以找到

是C语言中的一个例子++


所以现在我确信你已经解决了这个问题,或者失去了登录So的权限。祝你好运,享受这个过程,因为这是最好的部分。

你尝试过使用调试器吗?如果你想要整数,为什么要使用
strtofloat
呢?我们现在知道了预期的输出,但不知道输入值是什么。请努力并展示一个完整的示例e、 这里似乎有不止一个问题,数组从1,1开始,但从stringgrid访问值,该值从0,0开始(stringgrid1.cells[0,0]将是左上角的值)。只要我们不知道你的stringgrid是什么样子,我会说你错过了一些值。你必须按照我告诉你的至少一次的方法来做。制作一个SSCCE。一个完整的程序。它包含硬编码的输入。没有GUI。一个控制台应用程序,可以将输出打印到控制台。我们可以粘贴到我们的编译器中。Gauss Jordan很简单。一次您提供的SSCCE我们将能够更正。请记住将数字代码与输出分开。不要将数学和GUI混用。永远不要。