Метод ітерацій РелеяМетод ітерацій Релея — ітеративний алгоритм обчислення власних значень і векторів, який доповнює ідею зворотного степеневого методу ітеративним обчисленням поточного наближення до власного значення за допомогою відношення Релея. Метод Релея має дуже велику швидкість збіжності і часто для отримання розв'язку потрібно лише кілька ітерацій. Для симетричних і ермітових матриць за досить добре вибраних початкових значень збіжність кубічна. Однак час виконання кожної ітерації зазвичай пропорційний кубу розміру матриці, тоді як для зворотного степеневого і степеневого методу він квадратичний. АлгоритмЯк і в зворотному степеневому методі ми задаємо деяке початкове наближення до власного значення матриці і початковий вектор , який може бути або випадковим, або відомим наближенням до власного вектора. Далі ітеративно обчислюємо нові наближення до власного вектора за формулою , де одинична матриця. На завершення ітерації обчислюємо наступне наближення до власного значення за допомогою відношення Релея: Приклад програмної реалізаціїНижче наведено приклад реалізації мовою GNU Octave. function x = rayleigh(A, epsilon, mu, x)
x = x / norm(x);
% the backslash operator in Octave solves a linear system
y = (A - mu * eye(rows(A))) \ x;
lambda = y' * x;
mu = mu + 1 / lambda
err = norm(y - lambda * x) / norm(y)
while err > epsilon
x = y / norm(y);
y = (A - mu * eye(rows(A))) \ x;
lambda = y' * x;
mu = mu + 1 / lambda
err = norm(y - lambda * x) / norm(y)
end
end
Посилання
|
Portal di Ensiklopedia Dunia