Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21

Умножение матриц: исходная на обращённую

14.01.2014, 17:01. Показов 1004. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int i,j,k,n,m;
double SG1[maxN][maxN],SG2[maxN][maxN],SG3[maxN][maxN];
n=StrToFloat(LabeledEdit1->Text);
m=StrToFloat(LabeledEdit2->Text);
StringGrid2->RowCount=m;
StringGrid2->ColCount=n;
for(i=0;i<n;i++){
    for(j=0;j<n;j++){
     SG1[i][j]=StrToFloat(StringGrid1->Cells[j][i]);
     SG2[i][j]=StrToFloat(StringGrid2->Cells[j][i]);
                }
                    }
    for(i=0;i<n;i++)
       {
          for(j=0;j<n;j++)
             {
               SG3[i][j]=0;
               for(k=0;k<n;k++)
               SG3[i][j]+=SG1[i][k]*SG2[k][j];
               StringGrid3->Cells[j][i]=FloatToStr(SG3[i][j]);
             }
       }
}
Непонятность возникает на участке:
C++
1
2
3
4
5
6
7
for(j=0;j<n;j++)
             {
               SG3[i][j]=0;
               for(k=0;k<n;k++)
               SG3[i][j]+=SG1[i][k]*SG2[k][j];
               StringGrid3->Cells[j][i]=FloatToStr(SG3[i][j]);
             }
Дело в том, что я обращаю матрицу и полученную обращенную матрицу умножаю на исходную и должна получиться близкая к единичной. SG1 - Исходная, SG2 - обращенная. А теперь самый сок: при замене SG2 на SG1 т.е умножаю исходную на исходную - считает правильно, а при умножении SG1 на SG2, получается довольно отдалённый от необходимого, результат. Размерность 2х2 не в счет. Подскажите пожалуйста в чём мб дело, очень благодарен буду!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2014, 17:01
Ответы с готовыми решениями:

Умножение треугольных матриц«Методы обработки разреженных матриц»
Нужно перемножить треугольные матрицы в обычном виде и в свёрнутом. С обычным проблем нет. Доступ к элементам свёрнутой матрицы...

Перемножение матриц, умножение матриц на вектор, сложение матриц
Помогите пожалуйста написать программу, которая производит основные действия с матрицами произвольных размеров (перемножения 2х матриц,...

Умножение матриц с интерфейсом и возможность заполнения исходных матриц из файла
Здравствуйте. Я сделал программу, которая умножает матрицы с интерфейсом, только проблема в том что необходимо заполнять сами матрицы...

2
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
17.01.2014, 12:24
- Sashak, может быть в том, что в СтрингГрид индексация элементов идет так:
C++
1
2
  // .........
  StringGrid1->Cells[индекс_Столбца][индекс_Строки];
- Может сумма произведений накапливается неправильно!
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
17.01.2014, 17:03
Если бы сумма произведений накапливалась неправильно - то она бы и при умножении AT*A накапливалась неправильно, правда? А не только при A*AT...

Вот результат работы кода на матрице https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{vmatrix}1 & 3\\ 2 & 4\end{vmatrix}, соответственно, обратная для нее: https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{vmatrix}-2 & 1.5\\ 1 & -0.5\end{vmatrix}

Исходная на обратную:


Обратная на исходную:


Что-то не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.01.2014, 17:03
Помогаю со студенческими работами здесь

Транспонирование, умножение матриц, сложение матриц Реализовать в одной программере
транспонирование, умножение матриц, сложение матриц; B^3-A^T Реализовать в одной программере. Помогите решить

Умножение матриц (не работает для неквадратных матриц)
Доброго времени суток. Написал код для перемножения двух матриц. При вводе квадратной матрицы всё работает нормально. При вводе матриц с...

Чтение матриц с внешнего файла, умножение матриц...
Вот не могу составить программу... Необходимо считать матрицы А и В с внешнего файла (input). Матрица А размерностью 5х7, В размерностью...

Умножение матриц
#include &lt;iostream&gt; using namespace std; int main(int argc, const char * argv) { int **C; int n,k; /*...

Умножение матриц
Добрый вечер. Имеется вот такая лабораторная работа (прикрепил) Никак не могу разобраться с четвертой задачей, где требуется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru