Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > обратная матрица


Автор: TeeT 18.6.2006, 18:32
подскажите пожалста оптимальный алгоритм нахождения обратной матрицы 

Автор: popovda 18.6.2006, 19:53
Для каких размеров? Для любых?  

Автор: esperant0 18.6.2006, 20:09
Цитата(TeeT @ 18.6.2006,  18:32)
подскажите пожалста оптимальный алгоритм нахождения обратной матрицы

оптимальный по каким параметрам?


без этого уточнения ваш вопрос бессмыслен. 

Автор: popovda 18.6.2006, 21:05
Если это идет как лабораторная работа или матрица небольшая, то можно воспользоваться модификацией метода Гаусса, например методом Ершова:
В нем для A[nxn] строится последовательность матриц A^(0),A^(1),A^(2)...,A^(n). Здесь верхний индекс после ^, нижний - _, как в TeX'е.

Где
A^(0) = A - E,

a[i,j]^(m)' = a) a[i,j]^(m-1), если i != m,
                 = б) 1, если i = m и i = j
                 = в) 0, если i = m и i != j

a[i,j]^(m) = a[i,j]^(m)' - (a[i,m]^(m)' * a[m,j]^(m-1)) / ( 1 + a[m,m]^(m-1)); i,j,m = 1,2,...,n

Штрихованные матрицы являются вспомогательными, а результат A^(n) == A^(-1).
Можете посмотреть метод Фадеева.

Если же задача серьезная, то надо использовать иные методы,весьма эффективные, например через LU-разложение или метод Холецкого. http://fpmi.ami.nstu.ru/arhive/courses/chislmethods/lab1-3.pdf
Или здесь, правда тут только Fortran 77 и C с него транслированный http://www.srcc.msu.su/num_anal/lib_na/cat/cat54.htm. А если Вам не критично самому писать метод, воспользуйтесь библиотеками 
IMSL или LAPACK. Там алгоритмы очень эффективны. Кроме того в инете можно скачать в djvu трехтомник Бартеньева
"ФОРТРАН для профессионалов. Математическая библиотека IMSL". Рекомендую.
Советую Уилкинсон, Раш - Алгоритмы линейной алгебры (- там на Алголе (считай Паскаль) ).
  

Автор: podval 19.6.2006, 12:42
Поиск по форуму рулит
http://forum.vingrad.ru/index.php?showtopic=37776 

Автор: maxim1000 19.6.2006, 13:06
Цитата(podval @  19.6.2006,  11:42 Найти цитируемый пост)
Поиск по форуму рулит

насколько я понял, вопрос не в реализации метода Гаусса, а в сравнении различных методов по какому-то критерию (кстати, ещё не указанному smile ) 

Автор: TeeT 19.6.2006, 13:41
esperant0
Цитата

оптимальный по каким параметрам?

без этого уточнения ваш вопрос бессмыслен.  


по скорости, 
матрицы большие порядка 10000х10000

Добавлено @ 13:43 
podval
Цитата

Поиск по форуму рулит


Пасибо

Добавлено @ 13:48 
popovda
Цитата

Если же задача серьезная, то надо использовать иные методы,весьма эффективные, например через LU-разложение или метод Холецкого. Методичка по LU


ThanX 

Автор: maxim1000 19.6.2006, 14:17
ну ещё посмотреть на саму матрицу
возможно, для данной задачи она будет иметь какие-нибудь свойства, которые помогут ускорить обращение
например, тридиагональная матрица или разбиваемая на несколько квадратных меньшей размерности... 

Автор: maxim1000 28.12.2007, 11:46
вопрос о подсчёте операций вынес в отдельную тему:
http://forum.vingrad.ru/forum/topic-189346.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)