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


Автор: tab 17.7.2010, 21:05
Требуется найти максимальное собственное число квадратной симметрической матрицы N x N и соответствующий ему собственный вектор за кратчайшее время. Собственно вопрос стоит так - можно ли их(число и вектор) найти за линейное(O(N)) время? Или хотя бы аппроксимировать. Если да - то как, если нет - то почему?

Автор: maxim1000 18.7.2010, 10:25
у матрицы N^2 (ну, из-за симметричности можно считать N(N+1)/2, но для порядка это неважно) элементов, так что хотя бы для того, чтобы на каждый из них посмотреть, нужно выполнить O(N^2) операций

Автор: W4FhLF 18.7.2010, 11:52
За линейное время можно найти только если у тебя трёхдиагональная матрица, к такой сразу можно применять QR или QL разложения. А чтобы свести симметричную к трёхдиагональной нужно O(n^2)

Или за линейное время можно аппроксимировать наибольшее/наименьшее собственное значение если есть приближение собственного вектора матрицы или наоборот, собственный вектор если есть приближение собственного значения. Для этого используются Inverse iteration или Rayleigh quotient iteration. 

Автор: esperanto 18.7.2010, 20:08
Цитата(W4FhLF @ 18.7.2010,  11:52)
За линейное время можно найти только если у тебя трёхдиагональная матрица, к такой сразу можно применять QR или QL разложения.   

Не только.

Но это не суть.

Автор: tab 18.7.2010, 21:19
Ок. Понятно. Спасибо. Тема закрыта. 

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