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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 14:46   #1
rob7777
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 52
По умолчанию Процедура перемножения матриц в Delphi

Добрый день! Написал программу, но не уверен,что правильно, так проверку не проходит ни одно значение, посмотрите код пожалуйста..
Изображения
Тип файла: jpg задание1.JPG (57.5 Кб, 138 просмотров)
Вложения
Тип файла: rar задание.rar (192.6 Кб, 20 просмотров)

Последний раз редактировалось rob7777; 15.12.2012 в 18:33.
rob7777 вне форума Ответить с цитированием
Старый 15.12.2012, 21:14   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Вынужден Вас огорчить: произведение двух матриц есть матрица, а никак не вещественное число. Вот след этой самой матрицы Вам и нужно найти.

Произведение матриц (если упрощенно и без формул) получается умножением строк матрицы 1 на столбцы матрицы 2.

То есть (пример для первой строки)

c[1,1]=a[1,1]*b[1,1]+a[1,2]*b[2,1]+a[1,3]*b[3,1];
c[1,2]=a[1,1]*b[1,2]+a[1,2]*b[2,2]+a[1,3]*b[3,2];
c[1,3]=a[1,1]*b[1,3]+a[1,2]*b[2,3]+a[1,3]*b[3,3];

и т.д.

В аттаче - рабочая программа.
Вложения
Тип файла: zip задание.zip (238.4 Кб, 35 просмотров)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 16.12.2012, 20:22   #3
rob7777
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 52
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
произведение двух матриц есть матрица, а никак не вещественное число.
Да,точно. меня запутало задание. получается нужно найти следы исходных матриц,равные следам матриц X*Y и Y*X, да?
вопрос по коду:

Function Pr(m,n:matrix;razm:integer): matrix;
var i,j,k:integer;
sum: matrix;
begin {Рассчитываем произведение двух матриц}
for i:=0 to razm-1 do
for j:=0 to razm-1 do begin
sum[i,j]:=0;
for k:=0 to razm-1 do sum[i,j]:=sum[i,j]+m[i,k]*n[k,j];
end;
Pr:=sum;
end;

никак не могу разобраться почему,если убрать sum[i,j]:=0, то 1-ый массив нарушается. скажем Sum[0,0]=20, ведь когда цикл с K заканчивается, то j становится другим и
Sum с координатами [0,0] уже не будет?
rob7777 вне форума Ответить с цитированием
Старый 16.12.2012, 20:26   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

В матрице sum будет изначально мусор, поэтому нужно ее обнулить.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 16.12.2012, 20:27   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
никак не могу разобраться почему,если убрать sum[i,j]:=0, то 1-ый массив нарушается. скажем Sum[0,0]=20, ведь когда цикл с K заканчивается, то j становится другим и
Sum с координатами [0,0] уже не будет?
А зачем вообще убирать? Код же правильный. И как понять - "j становится другим"? j меняется в пределах собственного цикла на конкретный шаг (1) и в одну строну (инкремент).

Как справедливо заметил BDA- матрица sum должна быть проинициализирована

Цитата:
нужно найти следы исходных матриц,равные следам матриц X*Y и Y*X
Я понял, что нужно найти следы не исходных, а именно матриц X*Y и Y*X. Которые, кстати, будут равны между собой для любой пары матриц.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 16.12.2012 в 20:32.
Sciv вне форума Ответить с цитированием
Старый 16.12.2012, 20:52   #6
rob7777
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 52
По умолчанию

Понял,спасибо за помощь!)
rob7777 вне форума Ответить с цитированием
Старый 16.12.2012, 21:06   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Которые, кстати, будут равны между собой для любой пары матриц
Имхо, не одинаковые.
Взял рандомные 2 матрицы и посчитал - получил разные числа (может плохо считаю? )
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 16.12.2012, 21:20   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Имхо, не одинаковые.
Взял рандомные 2 матрицы и посчитал - получил разные числа (может плохо считаю? )
Считаешь хорошо, я глупости говорю
Был неправ.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) timepoka Помощь студентам 8 01.07.2011 13:20
Программа перемножения длинных чисел в C++ Lyanni Помощь студентам 4 27.04.2011 00:44
Ошибка в программе перемножения матрицы на вектор в делфи Настя-Картошка Помощь студентам 3 29.01.2011 17:01
Подпрограмма перемножения матриц (3 матрицы) Doublefaced Помощь студентам 8 01.07.2009 23:15
Подпрограмма перемножения матриц Doublefaced Помощь студентам 0 22.06.2009 11:26