这是我学校的作业,在德尔福进行高斯 - 乔丹淘汰,但是......我在这里遇到了一些问题......
我是这样做的:
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
我希望我能完成这个...... :( 任何人......请帮忙......
答案 0 :(得分:1)
免责声明:我对Gauss-jordan淘汰一无所知,也从未听说过。
但答案很清楚!
要么你的数学已经关闭,要么你正在抓错号码。
正如manuell在您发布的第一条评论中所建议的那样,您需要查看正在使用的数字。
在我使用的控制台中调试的一种简单方法是:writeln('whatever variable: ' + VARIABLE)
。
如果您在GUI开发中执行同样的操作,则可以使用MemoList
。有时您会对结果感到惊讶。
也可以根据需要使用正确的功能floatToStr
和strToFloat
不是您想要的。
修改强>
查找Gauss-jordan消除也称行减少,结果证明是简单的矩阵代数。
我从来不知道那可能被称为可能,因为虽然归因于高斯,但在公元179年对于中国数学家来说是already known。
这里有一个很好的例子:http://www.youtube.com/watch?v=Xc37YM59vVA
Delphi中的一个很好的例子,尽管用早期版本编写:Delphi-3编程语言,找到源代码here
另一个例子,但不仅仅是高斯消除,所以你必须查看可以找到的代码here
Here是C ++中的一个例子
所以现在我确定你已经解决了它或丢失了你的登录信息。祝你好运,享受这个过程,因为这是最好的部分。