SaveText.Ru

Без имени
  1. program matrica;            // Название программы
  2. uses crt;            // Подключение встроенного модуля
  3. label p;            // Объявление метки
  4. var            // Объявление глобальных переменных
  5.   a,c: array [1..3, 1..3] of integer;
  6.   b,d: array [1..3] of integer;
  7.   t,h: array [1..3, 1..3] of real;
  8.   y:integer;
  9.   l,x,d1,d2,d3,x1,x2,x3:real;
  10.  
  11. procedure yEo;            // Вызов: Вычисление выражения (A*A)*B
  12. var            // Объявление локальных переменных
  13.   i,j,s,k:integer;
  14. begin
  15.   ClrScr;            // Очистка экрана
  16.   for i:=1 to 3 do begin            {Цикл №1}
  17.     for j:=1 to 3 do begin            {Цикл №2}
  18.       s:=0;
  19.       for k:=1 to 3 do begin            {Цикл №3}
  20.         s:=s+a[i,k]*a[k,j];
  21.       end;            {Завершение: Цикл №3}
  22.       c[i,j]:=s;
  23.     end;            {Завершение: Цикл №2}
  24.   end;            {Завершние: Цикл №1}
  25.   d[1]:=(c[1,1]*b[1])+(c[2,1]*b[2])+(c[3,1]*b[3]);
  26.   d[2]:=(c[1,2]*b[1])+(c[2,2]*b[2])+(c[3,2]*b[3]);
  27.   d[3]:=(c[1,3]*b[1])+(c[2,3]*b[2])+(c[3,3]*b[3]);
  28.   GotoXY(10,3); Write('1. A=');            // Определение новой позиции курсора
  29.   for i:=1 to 3 do begin            {Цикл №1}
  30.     for j:=1 to 3 do begin            {Цикл №2}
  31.       GotoXY(12+4*i,1+j);            // Определение новой позиции курсора
  32.       WriteLn(a[j,i]);            // Вывод матрицы A
  33.     end;            {Завершение: Цикл №2}
  34.   end;            {Завершение: Цикл №1}
  35.   GotoXY(35,3); Write('2. B=');            // Определение новой позиции курсора
  36.   for i:=1 to 3 do begin            {Цикл №1}
  37.     GotoXY(41,(j-2)+1*i);            // Определение новой позиции курсора
  38.     WriteLn(b[i]);            // Вывод матрицы B
  39.   end;            {Завершение: Цикл №1}
  40.   GotoXY(10,10); Write('3. A*A=');            // Определение новой позиции курсора
  41.   for i:=1 to 3 do begin            {Цикл №1}
  42.     for j:=1 to 3 do begin            {Цикл №2}
  43.       GotoXY(14+4*i,8+j);            // Определение новой позиции курсора
  44.       WriteLn(c[i,j]);            // Вывод матрицы A*A
  45.     end;            {Завершение: Цикл №2}
  46.   end;            {Завершение: Цикл №1}
  47.   GotoXY(35,10); Write('4. (A*A)*B=');            // Определение новой позиции курсора
  48.   for i:=1 to 3 do begin            {Цикл №1}
  49.     GotoXY(47,(j+5)+1*i);            // Определение новой позиции курсора
  50.     WriteLn(d[i]);            // Вывод матрицы (A*A)*B
  51.   end;            {Завершение: Цикл №1}
  52.   ReadKey;            // Ожидание сигнала от клавиш клавиатуры
  53. end;            // Завершение: Вычисление выражения (A*A)*B
  54.  
  55. procedure yEtw;            // Вызов: Транспонирование матрицы A
  56. var            // Объявление локальных переменных
  57.   i,j:integer;
  58. begin
  59.   ClrScr;            // Очистка экрана
  60.   GotoXY(30,11); Write('A=');            // Определение новой позиции курсора
  61.   for i:=1 to 3 do begin            {Цикл №1}
  62.     for j:=1 to 3 do begin            {Цикл №2}
  63.       GotoXY(28+4*i,9+j);            // Определение новой позиции курсора
  64.       WriteLn(a[i,j]:2);            // Вывод транспонированной матрицы А
  65.     end;            {Завершение: Цикл №2}
  66.   end;            {Завершение: Цикл №1}
  67.   ReadKey;            // Ожидание сигнала от клавиш клавиатуры
  68. end;            // Завершение: Вычисление выражения (A*A)*B
  69.  
  70. procedure yEth;            // Вызов: Вычисление определителя матрицы А
  71. begin
  72.   ClrScr; // Очистка экрана
  73.   l:=(a[1,1]*((a[2,2]*a[3,3])-(a[2,3]*a[3,2])))-(a[1,2]*((a[2,1]*a[3,3])-(a[2,3]*a[3,1])))+(a[1,3]*((a[2,1]*a[3,2])-(a[2,2]*a[3,1])));
  74.   GotoXY(33,12); Writeln('Определитель = ',l:2:0); // Определение новой позиции курсора // Вывод найденного определителя матрицы А
  75.   ReadKey; // Ожидание сигнала от клавиш клавиатуры
  76. end;            // Завершение: Вычисление определителя матрицы А
  77.  
  78. procedure yEfo;            // Вызов: Поиск матрицы, обратной к матрице А
  79. var            // Объявление локальных переменных
  80.   i,j:integer;
  81. begin
  82.   ClrScr;            // Очистка экрана
  83.   l:=-80;
  84.   x:=-1;
  85.   for i:=1 to 3 do begin            {Цикл №1}
  86.     for j:=1 to 3 do begin            {Цикл №2}
  87.       t[1,1]:=sqr(x)*((a[2,2]*a[3,3])-(a[2,3]*a[3,2]));            //
  88.       t[2,1]:=(sqr(x)*x)*((a[2,1]*a[3,3])-(a[3,1]*a[2,3]));            //
  89.       t[3,1]:=(sqr(x)*x*x)*((a[2,1]*a[3,2])-(a[2,2]*a[3,1]));            //
  90.       t[1,2]:=(sqr(x)*x)*((a[1,2]*a[3,3])-(a[3,2]*a[1,3]));            //
  91.       t[2,2]:=(sqr(x)*x*x)*((a[1,1]*a[3,3])-(a[3,1]*a[1,3]));            //  Заполнение матрицы, обратной к матрице А
  92.       t[3,2]:=(sqr(x)*x*x*x)*((a[1,1]*a[3,2])-(a[3,1]*a[1,2]));            //
  93.       t[1,3]:=(sqr(x)*x*x)*((a[1,2]*a[2,3])-(a[2,2]*a[1,3]));            //
  94.       t[2,3]:=(sqr(x)*x*x*x)*((a[1,1]*a[2,3])-(a[2,1]*a[1,3]));            //
  95.       t[3,3]:=(sqr(x)*x*x*x*x)*((a[1,1]*a[2,2])-(a[2,1]*a[1,2]));            //
  96.     end;            {Завершение: Цикл №2}
  97.   end;            {Завершение: Цикл №1}
  98.   for i:=1 to 3 do begin            {Цикл №1}
  99.     for j:=1 to 3 do begin            {Цикл №2}
  100.       h[i,j]:=(1/l)*(t[i,j]);
  101.     end;            {Завершение: Цикл №2}
  102.   end;            {Завершение: Цикл №1}
  103.   GotoXY(9,11); Write('Обратная матрица = ');            // Определение новой позиции курсора
  104.   for i:=1 to 3 do begin            {Цикл №1}
  105.     for j:=1 to 3 do begin            {Цикл №2}
  106.       GotoXY(23+10*i,9+j);            // Определение новой позиции курсора
  107.       WriteLn(h[j,i]:2:4);            // Вывод матрицы, обратной к матрице А
  108.     end;            {Завершение: Цикл №2}
  109.   end;            {Завершение: Цикл №1}
  110.   ReadKey;            // Ожидание сигнала от клавиш клавиатуры
  111. end;            // Завершение: Поиск матрицы, обратной к матрице А
  112.  
  113. procedure yEfi;            // Вызов: Решение системы методом Крамера
  114. begin
  115.   ClrScr;            // Очистка экрана
  116.   l:=-80;
  117.   d1:=(b[1]*((a[2,2]*a[3,3])-(a[2,3]*a[3,2])))-(a[1,2]*((b[2]*a[3,3])-(a[2,3]*b[3])))+(a[1,3]*((b[2]*a[3,2])-(a[2,2]*b[3])));
  118.   d2:=(a[1,1]*((b[2]*a[3,3])-(a[2,3]*b[3])))-(b[1]*((a[2,1]*a[3,3])-(a[2,3]*a[3,1])))+(a[1,3]*((a[2,1]*b[3])-(b[2]*a[3,1])));
  119.   d3:=(a[1,1]*((a[2,2]*b[3])-(b[2]*a[3,2])))-(a[1,2]*((a[2,1]*b[3])-(b[2]*a[3,1])))+(b[1]*((a[2,1]*a[3,2])-(a[2,2]*a[3,1])));
  120.   x1:=d1/l; x2:=d2/l; x3:=d3/l;
  121.   GotoXY(35,10); Write('x1='); WriteLn(x1:2:0);            // Определение новой позиции курсора
  122.   GotoXY(35,12); Write('x2='); WriteLn(x2:2:0);            // Определение новой позиции курсора
  123.   GotoXY(35,14); Write('x3='); WriteLn(x3:2:0);            // Определение новой позиции курсора
  124.   ReadKey;            // Ожидание сигнала от клавиш клавиатуры
  125. end;            // Завершение: Решение системы методом Крамера
  126.  
  127. BEGIN            // Запуск блока основной программы
  128.   p:
  129.   TextBackground(1);            // Задание цвета фона: Синий
  130.   ClrScr;            // Очистка экрана
  131.   TextColor(7);            // Задание цвета символа: Белый
  132.   GotoXY(1,1); WriteLn(' ---------------'); GotoXY(1,2); WriteLn('     1 1 3     8');
  133.   GotoXY(1,3); WriteLn('  A=-2 4 2,  B=4'); GotoXY(1,4); WriteLn('     3 7 1     24');
  134.   GotoXY(1,5); WriteLn(' ---------------');
  135.   WriteLn('1 - Вычислить выражение (A*A)*B');
  136.   WriteLn('2 - Транспонировать матрицу А');
  137.   WriteLn('3 - Вычислить определитель матрицы A');
  138.   WriteLn('4 - Найти матрицу,обратную к матрице А');
  139.   WriteLn('5 - Решение системы методом Крамера');
  140.   WriteLn('6 - Выход');
  141.   WriteLn('Выберите нужную цифру'); readln(y);
  142.   a[1,1]:=1; a[1,2]:=1; a[1,3]:=3;            //
  143.   a[2,1]:=-2; a[2,2]:=4; a[2,3]:=2;            // Заполнение матрицы A
  144.   a[3,1]:=3; a[3,2]:=7; a[3,3]:=1;            //
  145.   b[1]:=8; b[2]:=4; b[3]:=24;            // Заполнение матрицы B
  146.   if y=1 then yEo;            // Вычисление выражения (A*A)*B
  147.   if y=2 then yEtw;            // Транспонирование матрицы A
  148.   if y=3 then yEth;            // Вычисление определителя матрицы А
  149.   if y=4 then yEfo;            // Поиск матрицы, обратной к матрице А
  150.   if y=5 then yEfi;            // Решение системы методом Крамера
  151.   if y=6 then exit;            // Выход из программы
  152.   goto p;            // Активация метки p
  153. END.            // Завершение блока основной программы

Share with your friends:

Распечатать