- - , .
- , .
- . , - .
- , . . .
- . 0. .
- , . , .
- 6 .
- 3-7 . .
- 9 . 1-11 , .
- .
- .
, .
: "" "" .
, :
[1,1], [1,2],..., [1,n]; 1, 0,..., 0;
[2,1], [2,2],..., [2,n]; 0, 1,..., 0;
...
[n,1], [n,2],..., [n,n]; 0, 0,..., 1;
"" . [1,1]. [1,1] 1. [2,1] - - . n-. .
. . (n-1)- . n- [n,n]. . .
1. , . , "" . : , , ( -1 ).
|
|
. . (i) n- n- [i,n]. (n-1)- .
. , , - . - .
const n=5;
eps=0.00001;
type matr=array[1..n,1..n] of real;
var a,b,a0:matr;
i,j,imx,np:integer;
s0,s1:real;
procedure MultString(var a,b:matr;i1:integer;r:real);
var j:integer;
begin
for j:=1 to n do
begin
a[i1,j]:=a[i1,j]*r;
b[i1,j]:=b[i1,j]*r;
end;
end;
procedure AddStrings(var a,b:matr;i1,i2:integer;r:real);
{ i1 a i2- r}
var j:integer;
begin
for j:=1 to n do
begin
a[i1,j]:=a[i1,j]+r*a[i2,j];
b[i1,j]:=b[i1,j]+r*b[i2,j];
end;
end;
procedure MultMatr(a,b:matr;var c:matr);
var i,j,k:byte;
s:real;
begin
for i:=1 to n do
for j:=1 to n do
begin
s:=0;
for k:=1 to n do
s:=s+a[i,k]*b[k,j];
c[i,j]:=s;
end;
end;
function sign(r:real):shortint;
begin
if (r>=0) then sign:=1 else sign:=-1;
end;
begin { }
randomize; { }
for i:=1 to n do
begin
for j:=1 to n do
begin
b[i,j]:=0;
a[i,j]:=1.0*random(8)-4;
end;
b[i,i]:=1;
end;
for i:=1 to n do
for j:=1 to n do
a0[i,j]:=a[i,j];
writeln('Starting matrix:'); np:=0;
PrintMatr();
for i:=1 to n do
begin
{ i- ( ) j-
i- j- . ,
a[i,i] i-
( i- ) a[i,i],
}
for j:=i+1 to n do
AddStrings(a,b,i,j,sign(a[i,i])*sign(a[j,i]));
{ }
if (abs(a[i,i])>eps) then
begin
MultString(a,b,i,1/a[i,i]);
for j:=i+1 to n do
AddStrings(a,b,j,i,-a[j,i]);
end
else
begin
writeln(' .');
halt;
end
end;
if (a[n,n]>eps) then
begin
for i:=n downto 1 do
for j:=1 to i-1 do
begin
AddStrings(a,b,j,i,-a[j,i]);
end;
end
else writeln(' .');
MultMatr(a0,b,a);
writeln(' , :');
PrintMatr();
writeln(': .');
PrintMatr();
end.