![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Court |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 16.11.2006 Репутация: нет Всего: нет |
Найти обратную матрицу методом Гаусса-Жордан , желательно попроще, размеры матрицы вводятся с клавы
![]() |
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
Court,
Это сообщение отредактировал(а) Kuvaldis - 26.11.2006, 15:13 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
Court |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 16.11.2006 Репутация: нет Всего: нет |
нужно на С++, сорри забыл указать...
![]() |
|||
|
||||
sentinel |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.8.2009 Репутация: нет Всего: нет |
Буквально сегодня дописала программу, реализующую решение системы линейных алгебраических уравнений методом Гаусса (в моем случае - метод без обратного хода), которая также находит и обратную матрицу для матрицы коэффициентов А (при задании системы в форме A*x=b) методом Гаусса-Жордана.
Я писала отдельный класс, поэтому выложу только часть метод приведения расширенной матрицы (A|E) (Е - тождественная матрица) к диагональному виду и часть кода самого метода Гаусса, которая завершает вычисление обратной матрицы. Это - большая часть процедуры приведения расширенной матрицы к диагональному виду, я работала параллельно с матрицами-элементами A и A_, вторая из которых до первой итерации приведения была тождественной, а после последней - стала обратной:
dim - размерность системы, задается извне. После вышеприведенных манипуляций остается только пронормировать построчно матрицу А - и вуаля!
В итоге получаем А=Е и А_ - обратную к первоначальной матрице А. Это сообщение отредактировал(а) sentinel - 12.10.2010, 19:43 |
||||
|
|||||
AXE7 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.10.2010 Репутация: нет Всего: нет |
Неплохой код, но в нём присутствуют логические ошибки.
1)(пометил восклицательными знаками) При выборе ведущего элемента просматриваются значения из строки, а нужно из столбца
2)(необходимо обеспечить остановку программы при нулевом столбце, так как обратной матрицы при его наличии не существует. 1) решается так: if ( fabs(A[j][i])>fabs(leader) ){ //!!!! leader=A[j][i]; //!!!! 2) пусть каждый решает в зависимости от того, как он использует нахождение обратной матрицы. (я решил воспользоваться генерацией исключения). |
||||
|
|||||
sentinel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.8.2009 Репутация: нет Всего: нет |
AXE7, спасибо, сама на днях пересматривала и исправила, а здесь поленилась =)
насчет пункта 2) - у меня в конце процедуры диагонализации стояла проверка определителя на равенство нулю, тут ее я решила не приводить (ну, вроде как если человек знает про условия существования обратной матрицы, то должен сам догадаться =) ) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |