|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Roman Kukushkin 2:5025/37.216 08 Jun 2002 15:45:30 To : Sergei Katkovsky Subject : Метод итераций для ЛС -------------------------------------------------------------------------------- Суббота Июнь 08 2002 в 01:51 Sergei Katkovsky писал Evgenij Masherov: SK>>> Вообще, значения первого и второго собственных чисел могут быть SK>>> просто близки, и тогда сходимость тоже будет не ахти. EM>> Если они действительны - сходимость будет великолепна. SK> Чтобы не быть голословным. С Матлабом знаком, наверное? Врочем, тут SK> все прозрачно. SK> clear; SK> A=diag([100 90 40 30 20 15 10 5 3 1]); SK> x=ones(10); SK> n=0; SK> while( abs(norm(x) - 100) > 1e-6) А почему не, скажем, while( abs(norm(x) - norm_old) > 1e-6)? У меня матлаба нет, но с этой проверкой сойдется точно быстрее (насчет точности не уверен). SK> x=x/norm(x); SK> x=A*x; SK> n=n+1; SK> end SK> norm(x) SK> n SK> Потребовалось 78 итераций. Меняем второе собственное значение на 99, SK> 99.9 и 99.99 требуется, соответственно, 689, 5755 и 46050 итераций. SK> Для матрицы 10х10 последнее многовато, не так ли? Здесь можно просто изменить условие контроля, вместо евклидовой нормы (norm(*) - евклидова?) использовать норму максимума $(\|x\|_\infty=max_i |x_i|)$. Алгоритм сойдется за одну итерацию. Правда этот алгоритм будет плохо работать если начальное приближение близко к одному из собственных векторов (независимо от выбора нормы). C уважением, Roman Kukushkin. --- УТВЕРЖДАЮ. MSG-редактор капитан 2.5 ранга Голд Дедович фор ДОС UNREG * Origin: Очень приятно! Царь! (2:5025/37.216) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/240123d0227ef.html, оценка из 5, голосов 10
|