学会建立高斯消元模板

程序参考网址:http://zhidao.baidu.com/link?url=H3RafI6i0Esj_FIgYiSNnzpbPN0VYheRSnwZrEIH8PKgtWql25HI6vKB14qwponGVWrbePsCTGIf2QYz-X9t_K

思路概括:将方程组化为梯形组,最后解得an,再回带即可

我写的程序:

var
  n,i,j,k:longint;
  x,t:array[0..1000]of extended;
  a:array[0..1000,0..1000]of extended;
  m:extended;
begin
  readln(n);
  for i:=1 to n do
   for j:=1 to n+1 do
    read(a[i,j]);
  for i:=1 to n-1 do
   begin
     for j:=i to n do
      if a[j,i]>a[i,i] then
       begin
         t:=a[i];
         a[i]:=a[j];
         a[j]:=t;
       end;
     for j:=i+1 to n do
      begin
        m:=a[j,i]/a[i,i];
        a[j,i]:=0;
        for k:=i+1 to n+1 do
         a[j,k]:=a[i,k]*m-a[j,k];
      end;
   end;
  x[n]:=a[n,n+1]/a[n,n];
  for i:=n-1 downto 1 do
   begin
     m:=0;
     for j:=i+1 to n do
      m:=m+a[i,j]*x[j];
     x[i]:=(a[i,n+1]-m)/a[i,i];
   end;
  for i:=1 to n do
   writeln(x[i]:0:2);
end.


你可能感兴趣的:(学会建立高斯消元模板)