№ варианта
|
Вектор потребления,
|
Матрица межотраслевого
баланса
|
Матрица межотраслевого баланса
|
1
|
1/3
|
1/3 1/6
½ ¼
|
½ ¼
¼ 1/4
|
11
program
KURSOVOJ_PROJECT;
type
int=0..10;
vec=array
[0..10] of real;
matr=array
[0..10,0..10] of real;
var
x,x_1,ax,ax_1,c:vec;
e,a,a_1,b,b_1,br,br_1:
matr;
m,n:int;
name:char;
procedure
readvec (var x:vec; name:char; n:int);
var
i:int;
begin
writeln('
Ввести вектор ',name,' размера
n=', n); for i:=0 to n-1 do
begin
write
(' ',name,'[',i:2,']='); readln(x[i])
end;
end;readvec
procedure
writevec (var x:vec; name:char; n:int);
var
i:int;
begin
writeln('
Вывести вектор ',name, ' размера
n=', n); for i:=0 to n-1 do
begin
write
(' ',name,'[',i:2,']='); writeln(x[i]:10:5)
end;
end;writevec
procedure
readmatr(var y:matr; name:char; n,m:int);
var
i,j:int;
begin
writeln
(' Ввести матрицу ',name,
' размера : n=' ,n,', * m=' ,m); for i:=0 to
n-1 do
for
j:=0 to m-1 do
begin
write('
',name, '[' ,i:2,' ,' ,j:2, ']= ');
readln
(y[i,j])
end;
end;readmatr
procedure
writematr(var y:matr; name:char; n,m:int);
var
i,j:int;
begin
writeln
(' Вывести матрицу ',name,
' размера: n=' ,n,', * m=' ,m);
for
i:=0 to n-1 do
for
j:=0 to m-1 do
begin
write('
',name, '[' ,i:2,' ,' ,j:2, ']= ');
writeln
(y[i,j]:8:4)
end;
end;writematr
procedure
Em (var E:matr; n:int);
var
i,j:int;
begin
for
i:=0 to n do
for
j:=0 to n do
if
i=j then E[i,j]:=1 else E[i,j]:=0;
end;end
E
procedure
Rmatr(var a,b,c:matr; n,m:int);
var
i,j:int;
begin
for
i:=0 to n do
for
j:=0 to m do
c[i,j]:=a[i,j]-b[i,j];
end;Rmatr
procedure
obrmatr (Var AIS,AP: matr; n:int);
var
i,j,k,l:integer;
a:matr;
begin
a:=AIS;
n:=n-1;
for
k:=0 to n do begin
for
j:=0 to n do
if
(j<>k) then AP[k,j]:=-a[k,j]/a[k,k];
for
i:=0 to n do
for
i:=0 to n do
for
j:=0 to n do
if
(i<>k) and (j<>k)
then
AP[i,j]:= a[i,j]-a[i,k]*a[k,j]/a[k,k];
AP[k,k]:=1/a[k,k];
a:=AP;
end;
end;
end obrmatr
procedure
matrvec(var b:matr; var c,x:vec; n:int);
var
i,j:int;
begin
for
j:=0 to n-1 do begin
x[j]:=0;
for
i:=0 to n-1 do
x[j]:=x[j]+b[i,j]*c[i]
end;
end;
end matrvec
{ ТЕЛО ПРОГРАММЫ }
begin
clrscr;
readvec
(c,'C',2);
readmatr
(a,'A',2,2);
readmatr
(a_1,'Z',2,2);
Em(e,2);
rmatr(e,a,br,2,2); rmatr(e,a_1,br_1,2,2); obrmatr(br,b,2); obrmatr(br_1,b_1,2);
matrvec (B,C,x,2); matrvec (B_1,C,x_1,2); matrvec (A,x,ax,2); matrvec
(A_1,x_1,ax_1,2);
if
(ax[0]<=c[0]) and (ax[1]<=c[1]) then
writeln (' Экономика матрица A - эффективна') else
writeln (' Экономика матрица A - не эффективна');
if
(ax_1[0]<=c[0]) and (ax_1[1]<=c[1]) then
writeln (' Экономика матрица A_1 - эффективна') else
writeln (' Экономика матрица A_1 - не эффективна');
readln
write
matr(B,’B’,2,2);
write
matr (B1,’Z’,2,2);
write
vec (x,’x’.2);
write
vec(x1,’y’,2);
end.
{Окончание
программы}
1.Процедура ввода
вектора
Ввод вектора X размерностью n
|
Для I от n до n-1 с шагом 1 делать
|
|
Ввести значение элемента массива X[i]
|
2.Процедура вывода вектора
Вывод вектора X размерностью n
|
Для i от 0 до n-1 с
шагом 1 делать
|
|
Вывести вектор X[i;j]
|
3.Процедура ввода матрицы
Ввод размерности n,m ввод элементов массива Y[i;j]
|
|
Для i от 0 до n-1 с
шагом 1 делать
|
|
|
Для i от 0 до m-1 с шагом
1 делать
|
|
|
|
Ввести значение элемента массива Y[i;j]
|
|
|
|
|
4.Процедура вывода матрицы
Вывод массива Y[i;j] размерностью n,m
|
|
Для i от 0 до n-1 с
шагом 1 делать
|
|
|
Для i от 0 до m-1 с
шагом 1 делать
|
|
|
Вывести массив Y[i;j]
|
|
|
|
|
5.Процедура вывода единичной матрицы
Вывод массива E[i;j] размерностью n
|
|
Для i от 0 до n-1 с
шагом 1 делать
|
|
Для i от 0 до m-1 с
шагом 1 делать
|
|
I=j
Да
Нет
|
|
E [I;j] =
1 F[j;j]=0
|
|
Вывести матрицу E [i;j]
|
6.Процедура умножения вектора на
матрицу
Для i от 0 до n-1 с
шагом 1 делать
|
|
Для i от 0 до m-1 с
шагом 1 делать
|
|
C[i;j]:=a[i;j]-b[i;j]
|
7.Процедура умножения вектора на
матрицу
Для i от 0 до n-1 с
шагом 1 делать
|
|
X[i;j]:=0
|
|
X[j]:=x[j]+c[i]*b[i;j]
|
8.Процедура образования матрицы
А=ais;n:=n-1
|
Для k от 0 до n с шагом 1 делать
|
|
Для i от 0 до n с шагом 1 делать
|
|
j≠k
true
|
Ap[k;j]:=-a[k;j]/a[k;k]
|
|
Для I от 1 до n с
шагом 1 делать
|
|
|
i≠k
true
|
|
|
Ap[i;k]:=A [i;k]/A[k;k]
|
|
|
Для i от 0 до n с
шагом 1 делать
|
|
|
Для j от 0 до nс шагом
1 делать
|
|
|
i≠k;j≠k
true
|
|
|
AP[i;j]:=a[i;j]-a[i;j]*a[k;j]/a[k;k]
|
|
|
AP[k;k]:=1/a[k;k]
|
|
|
Q:=AP
|
Расчеты при вводе
значений
При добавлении:
B[0,0]=4.6154
B[0,1]=1,0462
B[1,0]=3,0769
B[1,1]=2,0308
Вывести матрицу Z размера :n=2,m=2
Z[0,0]=2,400
Z[0,1]=0,800
Z[1,0]=0,800
Z[1,1]=1,600
Вывести вектор Х
размера n=2
Х[0]=13,84615
Х[1]=7,13846
Вывести вектор x размера n=2
Y[0]=4,8000
Y[1]=5,6000