|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
П 4.2 Итерационный степенной метод нахождения наибольшего по модулю собственного значения и соответствующего собственного вектора
Рассмотрим степенной метод нахождения наибольшего по модулю собственного значения и соответствующего собственного вектора [10]. Рассмотрим вещественную квадратную матрицу
.
Пусть – ее собственные значения, а – собственные вектора, соответствующие этим собственным значениям, т.е. . Будем считать, что матрица А обладает полной системой линейно-независимых собственных векторов, т.е. все предполагаем линейно-независимыми. Это будет иметь место, например, если матрица А симметрична () или если все ее собственные значения различны. Тогда систему собственных векторов можно считать базисом n -мерного векторного пространства. Выберем некоторый вектор в качестве начального итерационного приближения и рассмотрим следующую последовательность векторов:
. (1)
Выразим вектор на k -ой итерации через вектор начального приближения.
Разложим вектор начального приближения по базису
, (2) где - некоторые вещественные числа. Тогда для вектора получаем
.
Из определения любого собственного вектора можем записать .
Следовательно,
(3) или по компонентам , (4) где – i -ая компонента вектора ; – i -ые компоненты собственных векторов соответственно. Рассмотрим случай, когда матрица А имеет единственное максимальное по модулю вещественное собственное значение. Обозначим его и пронумеруем остальные собственные значения в порядке убывания их модулей, так что будем иметь
. (5)
Будем считать, что . Если это не так, то выбираем другой вектор начального приближения . В силу (4), (5) имеем для i -ой компоненты вектора :
(6) Так как в силу соотношения (5) все слагаемые вида при больших значениях k. Аналогично для i -ой компоненты вектора можем записать: . (7) Рассмотрим отношение соответствующих компонент вектора Y на двух соседних итерациях:
(8)
Построим итерационную последовательность
(9)
Эта последовательность сходится к исходному собственному значению при k → ∞ и любом i=1, 2, …, n. Таким образом, для нахождения с точностью нужно выбрать любой номер i и построить итерационную последовательность (9), заканчивая итерации по условию
.
Аналогичным образом можно найти собственный вектор , соответствующий собственному значению :
Так как собственный вектор определяется с точностью до постоянного множителя, отсюда находим
, где строится по правилу (1). Итерационным методом может быть найдено любое последующее собственное значение матрицы. Запишем формулу для нахождения собственного значения и собственного вектора [20]: . Пример 1. Методом итераций определить наибольшее по модулю собственное значение и соответствующий ему собственный вектор с точностью .
Решение: Строим последовательность векторов по правилу:
, где – произвольный вектор. Тогда имеем
, где и – одноименные координаты двух последовательных векторов. В качестве начального приближения возьмем , найдем ,
,
.
Найдем
, . Проверяем условие . Не выполняется, следовательно продолжаем итерационный процесс. Найдем , .
Проверяем условие . Условие не выполняется, продолжаем итерации. Точность достигнута на 8 итерации. Получаем
, - собственное значение.
Собственный вектор
или . Пример 2. В рамках итерационного метода нахождения наибольшего по модулю собственного значения и соответствующего собственного вектора реализовать метод умножения матрицы на вектор. Данный метод описан в классе «SquareMatrix». Реализация на языке программирования С++ может иметь следующий вид:
Vector SquareMatrix:: multiply_vec (SquareMatrix A, Vector f){ /*Результирующий вектор*/ double *res = new double[A.getRowCount()]; for (int i = 0; i < A.getRowCount(); i++){ for (int j = 0; j < A.getColCount(); j++){ res[i] += A.elements[i][j] * f.getElement(j); } } } /* Создание вектора */ return Vector(A.getRowCount(), res); } Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.01 сек.) |