0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 10
1

Определите процедуру для умножения матриц

16.12.2014, 14:45. Показов 1702. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание:
Даны натуральное n и (построчно) элементы квадратной вещественной матрицы А четвертого порядка. Вычислить n-ю степень этой матрицы (A1 = A; A2 = A*A; A3 = A2 * A и т.д.).
Указания:
1. Определите процедуру mult(a,b,c) для умножения матриц (a*b = c).
2. Для вычисления n-ой степени матрицы поступайте так же, как при вычислении в цикле n-ой степени числа, но вместо умножения чисел используйте процедуру mult.

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

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Program L21;
uses crt;
 
var
AA: array [1..4, 1..4] of real;
BB: array [1..4, 1..4] of real;
 
    i,j,q,l: integer;
    n: integer;  {степень в какую надо возвести матрицу А}
    s: real;
 
{Процедура перемножения матрицы}
procedure mult (a, b, c); {написано от Фонаря, так как не знаю как}
begin
 for i:=1 to 4 do
   begin
      for j:=1to 4 do
        begin
          s:=0;
          for q:=1 to 4 do
            begin
              s:=s+AA[i,q]*AA[q,j];
            end;
          BB[i,j]:=s;
        end;
    end;
end;
 
begin
clrscr;
randomize;
write(Введите натуральное число n:');
readln (n);
 
for i:=1 to 4 do
    for j:=1to 4 do
        AA[i,j]:=random(5);
 
writeln;
 
for i:=1 to 4 do
    begin
      for j:=1to 4 do
        begin
          write (AA[i,j]:2:2, ' ' );
        end;
      writeln;
    end;
 
 for i:=1 to 4 do
   begin
      for j:=1to 4 do
        begin
          s:=0;
          for q:=1 to 4 do
            begin
              s:=s+AA[i,q]*AA[q,j];
            end;
          BB[i,j]:=s;
        end;
    end;
 
for i:=1 to n-1 do MULT (a,b,c);
 
writeln;
writeln (Матрица возведенная в степень: ', n);
writeln;
for i:=1 to 4 do
    begin
      for j:=1to 4 do
        begin
          write (BB[i,j]:2:2, ' ' );
        end;
      writeln;
    end;
 
 
readln;
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2014, 14:45
Ответы с готовыми решениями:

Написать процедуру для сложения, умножения квадратных матриц N*N, и умножения матрицы на вектор
Написать процедуру для сложения, умножения квадратных матриц N*N, и умножения матрицы на вектор

использую процедуру умножения матриц, найти степени квадратной матрицы A^2,A^3.....A^(n-1),A^n.
Используя процедуру умножения матриц, найти степени квадратной матрицы A^2,A^3.....A^(n-1),A^n. ...

Описать процедуру сложение и умножения матриц.И поиск наименьшего собственного делителя)
Вообщем Здраствуйте форумчане) Помогите написать 2 задачки) 1.Описать процедуры сложения и...

Составить программу для умножения и сложения матриц.
В программе предусмотреть вывод исходных матриц и матрицы - результата. | 5 3 -1 | ...

4
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
16.12.2014, 15:10 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Program L21;
uses crt;
const k=4;
{Процедура перемножения матрицы}
type mtr=array [1..k, 1..k] of real;
procedure mult (a,b:mtr;var c:mtr);
var i,j,q:byte;
begin
for i:=1 to k do
for j:=1 to k do
 begin
  c[i,j]:=0;
  for q:=1 to k do
  c[i,j]:=c[i,j]+a[i,q]*b[q,j];
 end;
end;
var AA,BB,CC:mtr;
    i,j,n:byte;
begin
clrscr;
randomize;
repeat
write('Введите натуральное число от 2 до 7 n=');
readln(n);
until n in [2..7];
writeln('Исходная матрица А');
for i:=1 to k do
 begin
  for j:=1 to k do
   begin
    AA[i,j]:=5*random;
    write(AA[i,j]:5:2);
   end;
  writeln;
 end;
CC:=AA;
for i:=1 to n-1 do
 begin
  mult(CC,AA,BB);
  CC:=BB;
 end;
writeln ('Матрица возведенная в степень ',n);
for i:=1 to k do
 begin
  for j:=1 to k do
  write (BB[i,j]:12:2);
  writeln;
 end;
readln
end.
1
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 10
16.12.2014, 15:29  [ТС] 3
Спасибо, а я так через TYPE не хотела. Поясните пожалуйста:
1.
Цитата Сообщение от Puporev Посмотреть сообщение
procedure mult (a,b:mtr;var c:mtr);
почему по разному описаны a,b и c?
2.
Цитата Сообщение от Puporev Посмотреть сообщение
var AA,BB,CC:mtr;
это из-за условия или можно было бы использовать только АА.
3.
Цитата Сообщение от Puporev Посмотреть сообщение
CC:=AA;
for i:=1 to n-1 do
begin
mult(CC,AA,BB);
CC:=BB;
Тут воще паника. Почему, зачем???
Буду очень признательна, если просветите. (Не люблю процедуры )
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
16.12.2014, 15:35 4
Цитата Сообщение от zhenyak73 Посмотреть сообщение
почему по разному описаны a,b и c?
описаны одинаково, слово var перед c означает что матрица с это выходной параметр, создается в процедуре
Цитата Сообщение от zhenyak73 Посмотреть сообщение
это из-за условия или можно было бы использовать только АА.
нам при возведении в степень нужны 3 матрицы, как и написано в процедуре, а значит и 3 фактических параметра.
Pascal
1
2
3
4
5
CC:=AA;//запомнили матрицу А
for i:=1 to n-1 do
begin
mult(CC,AA,BB);//умножили С на исходную А, получили В
CC:=BB;//запомним ее, чтобы снова умножать
1
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 10
18.12.2014, 17:28  [ТС] 5
Огромное спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2014, 17:28
Помогаю со студенческими работами здесь

Определить, какое минимальное число операций умножения требуется для перемножения s матриц
Задана группа матриц A1, A2, …, As. Каждая матрица Ai задана размерами ni, mi, причем mi=ni+1....

Работа с процедурами. Для каждой из трех вещественных матриц определите среднее арифметическое ее положительных элементов
помогите плиз кто чем может заранее очень благодарен Задание 4. Для каждой из трех вещественных...

Подпрограммы. Вычислите сумму элементов каждого столбца для трех исходных матриц и определите наибольшую сумму
Вычислите сумму элементов каждого столбца для трех исходных матриц и определите наибольшую сумму.

Модуль умножения матриц
Реализовать в виде модуля подпрограмму для выполнения умножения одной квадратной матрицы на другую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru