Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > обратная матрица |
Автор: TeeT 18.6.2006, 18:32 |
подскажите пожалста оптимальный алгоритм нахождения обратной матрицы |
Автор: popovda 18.6.2006, 19:53 |
Для каких размеров? Для любых? |
Автор: esperant0 18.6.2006, 20:09 | ||
оптимальный по каким параметрам? без этого уточнения ваш вопрос бессмыслен. |
Автор: 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 |
насколько я понял, вопрос не в реализации метода Гаусса, а в сравнении различных методов по какому-то критерию (кстати, ещё не указанному ![]() |
Автор: TeeT 19.6.2006, 13:41 | ||||||
esperant0,
по скорости, матрицы большие порядка 10000х10000 Добавлено @ 13:43 podval,
Пасибо Добавлено @ 13:48 popovda,
ThanX |
Автор: maxim1000 19.6.2006, 14:17 |
ну ещё посмотреть на саму матрицу возможно, для данной задачи она будет иметь какие-нибудь свойства, которые помогут ускорить обращение например, тридиагональная матрица или разбиваемая на несколько квадратных меньшей размерности... |
Автор: maxim1000 28.12.2007, 11:46 |
вопрос о подсчёте операций вынес в отдельную тему: http://forum.vingrad.ru/forum/topic-189346.html |