Program mam, tylko chodzi mi o wytłumaczenie co z czym i dlaczego
Zamieszczam go tutaj:
program gauss;
uses crt;
const n=3;
type tab2=array[1..n,1..n] of real;
type tab=array[1..n] of real;
var ta,tk,tj:tab2;
tb,tx:tab;
pl:text;
procedure wpisz_a(var ta:tab2);
{var i,j:integer;}
begin
ta[1,1]:=1;
ta[1,2]:=3;
ta[1,3]:=2;
ta[2,1]:=2;
ta[2,2]:=-2;
ta[2,3]:=2;
ta[3,1]:=3;
ta[3,2]:=-1;
ta[3,3]:=1;
end;
procedure wpisz_b(var tb:tab);
begin
tb[1]:=1;
tb[2]:=2;
tb[3]:=3;
end;
procedure wyswietl_a(var ta:tab2);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(ta[i,j]:1:1,' ');
writeln;
end;
end;
procedure wyswietl_b(var tb:tab);
var i:integer;
begin
for i:=1 to n do
writeln(tb[i]:1:1);
end;
procedure gaus(var ta:tab2;var tb:tab;var tx:tab);
var i,j,k:integer;
w:real;
begin
for k:=1 to n-1 do
for i:=k+1 to n do
begin
tb[i]:=tb[i]-((ta[i,k]*tb[k])/ta[k,k]);
for j:=k+1 to n do
ta[i,j]:=ta[i,j]-((ta[i,k]*ta[k,j])/ta[k,k]);
end;
tx[n]:=tb[n]/ta[n,n];
for k:=n-1 downto 1 do
begin
w:=0;
for i:=k+1 to n do
w:=w+ta[k,i]*tx[i];
tx[k]:=(tb[k]-w)/ta[k,k];
end;
end;
procedure odwroc(var ta:tab2;var tk:tab2);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
tb[j]:=0;
tb[i]:=1;
wpisz_a(ta);
gaus(ta,tb,tx);
for j:=1 to n do
tk[j,i]:=tx[j];
end;
end;
procedure mnozenie(var ta:tab2;var tk:tab2;var tj:tab2);
var i,j,k:integer;
temp:real;
begin
for i:=1 to n do
begin
for k:=1 to n do
temp:=0;
for j:=1 to n do
tj[i,k]:=ta[i,j]*tk[j,k];
end;
end;
procedure plik(var tj:tab2);
var i,j:integer;
begin
assign(pl,'c:\tmp\gaus.txt');
rewrite(pl);
for i:=1 to n do
begin
for j:=1 to n do
write(pl,tj[i,j]:1:1,' ');
writeln(pl,' ');
end;
close(pl);
end;
BEGIN
clrscr;
wpisz_a(ta);
wpisz_b(tb);
wyswietl_a(ta);
writeln;
wyswietl_b(tb);
gaus(ta,tb,tx);
writeln;
wyswietl_b(tx);
odwroc(ta,tk);
wyswietl_a(tk);
mnozenie(ta,tk,tj);
wyswietl_a(tj);
plik(tj);
END.