|
Вопрос # 389/ вопрос открыт / |
|
УВАЖАЕМЫЕ ЭКСПЕРТЫ, покажите, пожалуйста, как в перемножить две матрицы различных размеров с помощью циклов for.Заранее ОГРОМНЕЙШЕЕ ВАМ СПАСИБО!!!!!!!!!!:-))
 |
Вопрос задала: Лена22XxX (статус: Посетитель)
Вопрос отправлен: 9 марта 2007, 17:38
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
вы должны помнить, что не всякие матрицы можно множить. Если множим матрицу A на B, то необходимо чтобы число столбцов матрицы A было равно числу строк матрицы B.
А иначе никак.
Как реализовать. Открываем учебник и читаем
Элемент Cij, стоящий на пересечении i-й строки
и j-го столбца матрицы C = AB, равен сумме попарных произведений
соответствующих элементов i-й строки матрицы A и j-го столбца матрицы B.
также, заметим, что если A имеет размерность (m,n)
а B (n,p)
то результак будет C размерности (m,p)
Реализация в приложении. Её можно оптимизировать, но для понимания - самое оно
Приложение: Переключить в обычный режим- const n=???;
- m=???;
- p=???;
- var a:array[1..m,1..n] of real;
- b:array[1..n,1..p] of real;
- c:array[1..m,1..p] of real;
- begin
-
- for i:=1 to m do
- for j:=1 to p do
- begin
- c[i,j]:=0;
- for k:=1 to n do
- c[i,j]:=c[i,j]+a[i,k]*b[k,j]
- end;
-
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 9 марта 2007, 17:59
Оценка за ответ: 5
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|