来自「线性方程算法」· 代码 · 共 67 行

TXT
67
字号
{输入方程个数n,再输入n个方程} 
{例如方程3x+2y=1,2x+7y=0,则输入: 
2 
3 2 1 
2 7 0 
} 
{使用了高斯消元法} 
program p1052;{解线性方程组}
const maxn=100;
type float=real;
int=integer;
var a:array[1..maxn,1..maxn]of float;
b:array[1..maxn]of float;
d,t,sum:float;
k,l,iii,j,m,n,ii,jj,loop:int;
ch:char;
begin
readln(n);
m:=n;
for ii:=1 to n do begin
    for jj:=1 to m do read(a[ii][jj]);
    read(b[ii]);
end;
k:=1;
d:=0;
l:=0;
while(k<=n)do begin
        d:=a[k][k];
        l:=k;
        for iii:=k+1 to n do begin
        if(abs(a[iii][k])>abs(d)) then begin
                    d:=a[iii][k];
                    l:=iii;
        end;
        end;
        if(l<>k)then begin
            for j:=k to n do begin
              t:=a[l,j];
              a[l,j]:=a[k,j];
              a[k,j]:=t;
            end;
            t:=b[k];
            b[k]:=b[l];
            b[l]:=t;
        end;
        for j:=k+1 to n do a[k,j]:=a[k][j]/a[k][k];
        b[k]:=b[k]/a[k,k];
        for iii:=k+1 to n do begin
        for j:=k+1 to n do a[iii,j]:=a[iii,j]-a[iii,k]*a[k,j];
        j:=1;
        b[iii]:=b[iii]-a[iii,k]*b[k];
        end;
        inc(k);
end;
for iii:=n-1 downto 1 do begin
    sum:=0;
    for j:=iii+1 to n do sum:=sum+a[iii,j]*b[j];
    b[iii]:=b[iii]-sum;
end;
for loop:=1 to n do begin
    if loop=n then ch:=chr(13) else ch:=' ';
    write(round(b[loop]),ch);
end;
readln;
readln;
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?