|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.11.2008, 23:54 | #1 |
Новичок
Джуниор
Регистрация: 10.11.2008
Сообщений: 2
|
Обращение матрицы методом союзной матрицы
Здравствуйте, требуется помощь знающих людей, спасибо заранее.
у меня есть задача: написать программу на Delphi , которая будет обращать данную квадратную матрицу методом союзной матрицы. То есть надо написать алгоритмы нахождения определителя, создания матрицы алгебраических дополнений и наконец самой обратной матрицы, что у меня и не получается... Спасибо за помощь Последний раз редактировалось dofmat; 11.11.2008 в 01:05. |
11.11.2008, 11:38 | #2 |
Участник клуба
Регистрация: 23.07.2007
Сообщений: 1,054
|
Вопрос с определителем тут уже рассатривался, ну а забить массив определителями от миноров для каждого члена матрицы не далжно составлять особого труда. потом меняешь строки и столбцы местами и это уже будет союзная транспонированная матрица. Осталось только умножить каждый член на 1/detA - число обратно пропорциональное определителю вот и обратная матрица. В общем весь вопрос уперается в нахождение определителя
Писано по д'Эльфийски
|
11.11.2008, 11:45 | #3 |
Участник клуба
Регистрация: 23.07.2007
Сообщений: 1,054
|
http://www.programmersforum.ru/showthread.php?t=26772
смотри здесь про определитель
Писано по д'Эльфийски
|
11.11.2008, 12:08 | #4 |
Новичок
Джуниор
Регистрация: 10.11.2008
Сообщений: 2
|
а вот как забить массив определителями от миноров исходной матрицы?
|
12.11.2008, 11:44 | #5 |
Участник клуба
Регистрация: 23.07.2007
Сообщений: 1,054
|
Минор для члена- это почти та же матрица что и исходная но без одного столбца и строки! нет той строки и столбца, в которой нажодится данный член.
Создадим массив для хранения союзной матрицы Думаю нужно создать цикл в цикле (перебор всех членов матрицы) можно создать еще один, временный массив в котором будем хранить минор. ну и все опять же вызываем функцию по нахождению определителя и вписываем результат в союзную матрицу. Или вы хотите чтобы вам готовую программу написали?
Писано по д'Эльфийски
|
02.10.2011, 23:54 | #6 | |
Регистрация: 02.10.2011
Сообщений: 3
|
Цитата:
В качестве метода расчета выбрал метод расчета с помощью матрицы алгебраических дополнений. Принцип расчета - находится определитель матрицы. Затем создается транспонированная матрица алгебраических дополнений, каждый элемент которой делится на определитель матрицы. Расчет определителя - получился и работает. А вот с алгебраическими дополнения возникли трудности det:=1.0; // начинаю прямой ход Гаусса for k:=1 to n do begin det:=det*A[k,k]; //вычисление определителя for j:=k+1 to n do begin A[k,j]:=A[k,j]/A[k,k]; end; for i:=k+1 to n do //начало вложенного цикла for j:=k+1 to m do begin r:=A[k,j]*A[i,k]; A[i,j]:=A[i,j]-r; end; end; // Делаю транспонирование матрицы begin for i:=1 to n do for j:=1 to m do D[i,j]:=A[j,i]; for i:=1 to n do for j:=1 to m do C[i,j]:=(1/det)*D[i,j]; begin for i:=1 to n do for j:=1 to m do StringGrid_C.Cells[j-1,i-1]:=FloatToStr(C[i,j]) // вношу полученное значение в матрицу С end; end; Красным отмечен участок, который я неправильно написал. Я просто транспонировал матрицу (заменил строки столбцами) и разделил каждый элемент на определитель, но это оказалось неправильным расчетом. Во вложении к сообщению есть изображение примера расчета обратной матрицы. В нем находят так называемые миноры, которые и образуют обратную матрицу. В интернете много примеров расчета обратных матриц на паскале, но я не могу их понять и поэтому решил писать свою программу. Определитель посчитан, нужно разобраться как находить миноры, а потом их уже домножать как в примере на -1 в степени суммы индексов и делить на определитель, расположив в новой матрице. Как написать код, чтобы найти эти миноры? P.S. Я знаю, что в Delphi есть функции, которые позволяют рассчитывать матрицы более проще, но мне хочется разобраться с минорами. |
|
03.10.2011, 15:01 | #7 |
Регистрация: 02.10.2011
Сообщений: 3
|
Написал программу расчета обратной матрицы и расчета минора, как я понимаю.
Код:
Последний раз редактировалось Andbiz; 03.10.2011 в 15:13. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
матрицы | Ensoph | Помощь студентам | 1 | 24.10.2007 09:38 |