| 
| 
 | Вопрос # 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
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |