Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 15:44   #1
ekzobyte
Пользователь
 
Аватар для ekzobyte
 
Регистрация: 03.02.2009
Сообщений: 30
По умолчанию Перемножение матриц (Delphi)

Пожалуйста, подскажите, как перемножить две матрицы разного размера?
ekzobyte вне форума Ответить с цитированием
Старый 24.05.2009, 15:47   #2
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

http://devels.ru/index.php?what=art&p=106
http://www.cyberforum.ru/pascal/thread33569.html
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Старый 24.05.2009, 15:53   #3
ekzobyte
Пользователь
 
Аватар для ekzobyte
 
Регистрация: 03.02.2009
Сообщений: 30
По умолчанию

Уже писал. Работает только с матрицами одного размера. Иначе выдаёт ошибку.

matr = array of array of real;
mm1, nn1, mm2, nn2 - размеры матриц первой и второй

Код:
function mult_matr(aa, ab : matr) : matr;
 var
   i, j, k : integer;
begin
 SetLength(Result, mm1, nn2);
   for i := 0 to mm1 - 1 do
   for j := 0 to nn2 - 1  do
     begin
        Result[i,j] := 0;
         for k := 0 to nn1 - 1 do
           Result[i,j] := Result[i,j] + aa[i,k] * ab[k,j];
     end;
end;
ekzobyte вне форума Ответить с цитированием
Старый 24.05.2009, 16:17   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Мы не можем перемножать любые матрицы. Количество столбцов первой матрицы и количество строк второй матрицы должно совпадать!

выполняем: a*b=c
размер первой матрицы: a[m,n]
размер второй матрицы: b[n,r]
размер результата: c[m,r]
_Dmitry вне форума Ответить с цитированием
Старый 24.05.2009, 16:27   #5
ekzobyte
Пользователь
 
Аватар для ekzobyte
 
Регистрация: 03.02.2009
Сообщений: 30
По умолчанию

Цитата:
Мы не можем перемножать любые матрицы. Количество столбцов первой матрицы и количество строк второй матрицы должно совпадать!

выполняем: a*b=c
размер первой матрицы: a[m,n]
размер второй матрицы: b[n,r]
размер результата: c[m,r]
Знаю, я это учёл при задании размерностей матриц. Но перемножает нормально только матрицы 3x3
ekzobyte вне форума Ответить с цитированием
Старый 24.05.2009, 17:59   #6
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Алгоритм перемножения правильный. Ищите ошибку в другом месте программы.
_Dmitry вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемножение матриц jorjinho10 Паскаль, Turbo Pascal, PascalABC.NET 1 11.05.2009 12:56
Перемножение матриц в Delphi, конкретный случай Дарья Inc. Помощь студентам 1 25.04.2009 22:03
Перемножение матриц Blad47 Общие вопросы C/C++ 1 02.02.2009 00:21
Перемножение матриц Арина Помощь студентам 1 18.05.2007 19:21