
Var z:vector);
function evklid_norma_vector(x:vector;n:size):real;
function norma1_vector(x:vector;n:size):real;
function norma2_vector(x:vector;n:size):real;
function scal_mult_vector(x,y:vector;n:size):real;
procedure add_matrix(a,b:matrix;n:size;var c:matrix);
procedure sub_matrix(a,b:matrix;n:size;var c:matrix);
procedure mult_number_matrix(p:real;a:matrix;n:size;
var c:matrix);
procedure mult_matrix(a,b:matrix;n:size;var c:matrix);
procedure mult_matrix_vector(a:matrix;x:vector;n:size;
Var z:vector);
procedure transp_matrix(a:matrix;n:size;var c:matrix);
function evklid_norma_matrix(a:matrix;n:size):real;
function norma1_matrix(a:matrix;n:size):real;
function norma2_matrix(a:matrix;n:size):real;
procedure read_vector(var f:text;var x:vector;n:size);
procedure read_matrix(var f:text;var a:matrix;n:size);
procedure write_vector(var f:text;x:vector;n:size;q:byte);
procedure write_matrix(var f:text;a:matrix;n:size;q:byte);
implementation
procedure add_vector(x,y:vector;n:size;var z:vector);
var
i:size;
begin
for i:=1 to n do z[i]:=x[i]+y[i];
end;
procedure sub_vector(x,y:vector;n:size;var z:vector);
var
i:size;
begin
for i:=1 to n do z[i]:=x[i]-y[i];
end;
procedure mult_number_vector(p:real;x:vector;n:size;
var z:vector);
var
i:size;
begin
for i:=1 to n do z[i]:=p*x[i];
end;
function evklid_norma_vector(x:vector;n:size):real;
var
s:real;
i:size;
begin
s:=0;
for i:=1 to n do s:=s+x[i]*x[i];
evklid_norma_vector:=sqrt(s);
end;
function norma1_vector(x:vector;n:size):real;
var
s:real;
i:size;
begin
s:=0;
for i:=1 to n do s:=s+abs(x[i]);
norma1_vector:=s;
end;
function norma2_vector(x:vector;n:size):real;
var
max:real;
i:size;
begin
max:=abs(x[1]);
for i:=2 to n do if abs(x[i])>max then max:=abs(x[i]);
norma2_vector:=max;
end;
function scal_mult_vector(x,y:vector;n:size):real;
var
s:real;
i:size;
begin
s:=0;
for i:=1 to n do s:=s+x[i]*y[i];
scal_mult_vector:=s;
end;
procedure add_matrix(a,b:matrix;n:size;var c:matrix);
var
i,j:size;
begin
for i:=1 to n do
for j:=1 to n do c[i,j]:=a[i,j]+b[i,j];
end;
procedure sub_matrix(a,b:matrix;n:size;var c:matrix);
var
i,j:size;
begin
for i:=1 to n do
for j:=1 to n do c[i,j]:=a[i,j]-b[i,j];
end;
procedure mult_matrix(a,b:matrix;n:size;var c:matrix);
var
i,j,k:size;
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;
procedure mult_number_matrix(p:real;a:matrix;n:size;
var c:matrix);
var
i,j:size;
begin
for i:=1 to n do
for j:=1 to n do c[i,j]:=p*a[i,j];
end;
procedure mult_matrix_vector(a:matrix;x:vector;n:size;var z:vector);
var
i,k:size;
s:real;
begin
for i:=1 to n do
begin
s:=0;
for k:=1 to n do s:=s+a[i,k]*x[k];
z[i]:=s;
end;
end;
procedure transp_matrix(a:matrix;n:size;var c:matrix);
var
i,j:size;
begin
for i:=1 to n do
for j:=1 to n do c[i,j]:=a[j,i];
end;
function evklid_norma_matrix(a:matrix;n:size):real;
var
i,j:size;
s:real;
begin
s:=0;
for i:=1 to n do
for j:=1 to n do s:=s+a[i,j]*a[i,j];
evklid_norma_matrix:=sqrt(s);
end;
function norma1_matrix(a:matrix;n:size):real;
var
i,j:size;
s:vector;
max:real;
begin
for j:=1 to n do
begin
s[j]:=0;
for i:=1 to n do s[j]:=s[j]+abs(a[i,j]);
end;
max:=s[1];
for j:=2 to n do if s[j]>max then max:=s[j];
norma1_matrix:=max;
end;
function norma2_matrix(a:matrix;n:size):real;
var
i,j:size;
s:vector;
max:real;
begin
for i:=1 to n do
begin
s[i]:=0;
for j:=1 to n do s[i]:=s[i]+abs(a[i,j]);
end;
max:=s[1];
for i:=2 to n do if s[i]>max then max:=s[i];
norma2_matrix:=max;
end;
procedure read_vector(var f:text; var x:vector;n:size);
var
i:size;
begin
for i:=1 to n do
read(f,x[i]);
end;
procedure read_matrix(var f:text;var a:matrix;n:size);
var
i,j:size;
begin
for i:=1 to n do
for j:=1 to n do
read(f,a[i,j]);
end;
procedure write_vector(var f:text;x:vector;n:size;q:byte);
var
i:size;
begin
if q>4 then q:=4;
case q of
0:for i:=1 to n do write(f,x[i]:8:0,' ');
1:for i:=1 to n do write(f,x[i]:9:1,' ');
2:for i:=1 to n do write(f,x[i]:10:2,' ');
3:for i:=1 to n do write(f,x[i]:11:3,' ');
4:for i:=1 to n do write(f,x[i]:12:4,' ');
end;
writeln(f);
end;
procedure write_matrix(var f:text;a:matrix;n:size;q:byte);
var
i,j:size;
begin
if q>4 then q:=4;
case q of
0:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:8:0,' ')
else writeln(f,a[i,j]:8:0,' ');
1:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:9:1,' ')
else writeln(f,a[i,j]:9:1,' ');
2:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:10:2,' ')
else writeln(f,a[i,j]:10:2,' ');
3:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:11:3,' ')
else writeln(f,a[i,j]:11:3,' ');
4:for i:=1 to n do
for j:=1 to n do
if j<> n then write(f,a[i,j]:12:4,' ')
else writeln(f,a[i,j]:12:4,' ');
end;
writeln(f);
end;
Після компіляції файла matr_alg.pas буде створено файл matr_alg.tpu в поточному каталозі;