Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab7.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
292.35 Кб
Скачать

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 в поточному каталозі;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]