Работа с массивами и подпрограммами, ознакомление с вводом данных из файла, страница 5

     for j:=1 to n do

      begin

       sum:=0;

       for k:=1 to l do

        sum:=sum+p[i,k]*q[k,j];

       r[i,j]:=sum;

      end;

   end;

  {основная программа}

begin

  {очистка экрана}

  clrscr;

  {ввод из файла размеров и элементов матриц C,B,A}

  assign(f,'muxamed.inp');

   reset(f);

   read(f,m,n);

   for i:=1 to m do

    for j:=1 to n do read(f,c[i,j]);

   for i:=1 to m do

    for j:=1 to n do read(f,b[i,j]);

   for i:=1 to m do

    for j:=1 to n do read(f,a[i,j]);

  close(f);

  {вывод на экран матрицы C}

  writeln('матрица C');

  vivod(c,m,n);

  {вывод на экран матрицы B}

  writeln('матрица B');

  vivod(b,m,n);

  {вывод на экран матрицы A}

  writeln('матрица A');

  vivod(a,m,n);

readln;

  {вычисление и вывод на экран матрицы CТ}

  transpor(c,m,n,ct);

  writeln('матрица CT');

  vivod(ct,n,m);

readln;

  {вычисление и вывод на экран матрицы CT*B}

  mult(ct,b,m,n,m,ctb);

  writeln('матрица CT*H');

  vivod(ctb,m,n);

readln;

{вычисление и вывод на экран матрицы АТ}

 transpor(a,m,n,at);

 writeln('матрица АТ');

 vivod(at,m,n);

  {вычисление и вывод на экран матрицы 3*AT}

  matrnac(at,m,n,atc);

  writeln('матрица 3*AT');

  vivod(atc,m,n);

readln;

  {вычисление и вывод на экран матрицы CT*B+3*AT)}

  slog(ctb,atc,m,n,ctbatc);

  writeln('матрица CT*B+3*AT');

  vivod(ctbatc,m,n);

readln;

end.

7. Исходные данные

Ниже представлен файл данных – muxamed.inp, в котором представлены данные о каждой матрице: сначала указаны количества строк и столбцов каждой матрицы, а потом идут сами элементы матрицы.

3 3

1 3 2

5 4 5

6 2 1

2 6 2

3 3 5

1 4 1

-2 1 -5

3 2 -3

-4 5 4

рис.1 Исходные данные.


                                                8. Результаты счёта

Ниже представлены результаты счёта матриц в Паскале, как видно, они совпадают с результатами, полученными в тесте, следовательно все подпрограммы и сама основная программа составлены и работают правильно.

матрица C

   1.0   3.0   2.0

   5.0   4.0   5.0

   6.0   2.0   1.0

матрица B

   2.0   6.0   2.0

   3.0   3.0   5.0

   1.0   4.0   1.0

матрица A

  -2.0   1.0  -5.0

   3.0   2.0  -3.0

  -4.0   5.0   4.0

матрица CT

   1.0   5.0   6.0

   3.0   4.0   2.0

   2.0   5.0   1.0

матрица CT*H

  23.0  45.0  33.0

  20.0  38.0  28.0

20.0  31.0  30.0

матрица АТ

  -2.0   3.0  -4.0

   1.0   2.0   5.0

  -5.0  -3.0   4.0

матрица 3*AT

  -6.0   9.0 -12.0

   3.0   6.0  15.0

 -15.0  -9.0  12.0

матрица CT*B+3*AT

  17.0  54.0  21.0

  23.0  44.0  43.0

   5.0  22.0  42.0

Рис.2  Результаты счета в Pascal.

Заключение.

Благодаря проведенной работе, мы получили навыки, позволяющие в дальнейшем использовать среду программирования Pascal, применять различные функции и процедуры для вычисления матричных выражений. Ведь известно, что матрицы широко используются при проведении разнообразных вычислений, в том числе и при решении систем линейных уравнений. С помощью Pascal можно вычислять матрицы практически любой сложности.