|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.12.2012, 14:46 | #1 |
Пользователь
Регистрация: 07.11.2011
Сообщений: 52
|
Процедура перемножения матриц в Delphi
Добрый день! Написал программу, но не уверен,что правильно, так проверку не проходит ни одно значение, посмотрите код пожалуйста..
Последний раз редактировалось rob7777; 15.12.2012 в 18:33. |
15.12.2012, 21:14 | #2 |
Старожил
Регистрация: 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]; и т.д. В аттаче - рабочая программа.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
16.12.2012, 20:22 | #3 |
Пользователь
Регистрация: 07.11.2011
Сообщений: 52
|
Да,точно. меня запутало задание. получается нужно найти следы исходных матриц,равные следам матриц 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] уже не будет? |
16.12.2012, 20:26 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
В матрице sum будет изначально мусор, поэтому нужно ее обнулить.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
16.12.2012, 20:27 | #5 | ||
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Цитата:
Как справедливо заметил BDA- матрица sum должна быть проинициализирована Цитата:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 16.12.2012 в 20:32. |
||
16.12.2012, 20:52 | #6 |
Пользователь
Регистрация: 07.11.2011
Сообщений: 52
|
Понял,спасибо за помощь!)
|
16.12.2012, 21:06 | #7 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Цитата:
Взял рандомные 2 матрицы и посчитал - получил разные числа (может плохо считаю? )
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|
16.12.2012, 21:20 | #8 | |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Цитата:
Был неправ.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) | 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 |