Степенной метод — один из самых простых итерационных способов решения частичной задачи о собственных значениях. Он позволяет приближённо найти наибольшее по модулю собственное значение матрицы и соответствующий ему собственный вектор.
Основная идея метода заключается в последовательном умножении начального вектора на заданную матрицу. В ходе этого процесса полученные векторы постепенно приближаются к прямой, задаваемой собственным вектором доминирующего собственного значения. Рассмотрим, при каких условиях это происходит и как строится соответствующий итерационный процесс.
Наибольшее по Модулю Собственное Значение Матрицы: Что Именно Ищет Метод
Пусть задана квадратная матрица \( A \) порядка \( n \):
\[
A=
\begin{pmatrix}
a_{11} & a_{12} & \dots & a_{1n}\\
a_{21} & a_{22} & \dots & a_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
a_{n1} & a_{n2} & \dots & a_{nn}
\end{pmatrix},
\]
Предположим, что матрица \( A \) имеет полную систему линейно независимых собственных векторов, а её собственные значения упорядочены по модулю следующим образом:
\[
|\lambda_1|>|\lambda_2|\geq|\lambda_3|\geq\dots\geq|\lambda_n|.
\]
Собственное значение \( \lambda_1 \) называют доминирующим. Его модуль превышает модули всех остальных собственных значений матрицы:
\[
|\lambda_1|=\max_{1\leq i\leq n}|\lambda_i|.
\]
Для сходимости обычного степенного метода важно, чтобы доминирующее собственное значение было единственным по модулю:
\[
|\lambda_1|>|\lambda_2|.
\]
При этом собственные значения \( \lambda_2,\lambda_3,\dots,\lambda_n \) могут иметь одинаковые модули. Главное, чтобы ни одно из них не имело такого же модуля, как \( \lambda_1 \).
Если несколько собственных значений имеют одинаковый наибольший модуль, обычный степенной метод может не сходиться к одному определённому собственному вектору. В таком случае поведение итерационных векторов будет зависеть от начального приближения и соотношения между соответствующими собственными значениями.
Пусть \( x_1,x_2,\dots,x_n \) — собственные векторы матрицы \( A \), соответствующие собственным значениям \( \lambda_1,\lambda_2,\dots,\lambda_n \). По определению собственного значения имеем
\[
A\cdot x_i=\lambda_i\cdot x_i,\qquad i=1,2,\dots,n.
\]
Умножим обе части этого равенства ещё раз на матрицу \( A \):
\[
A^2\cdot x_i=A\cdot\left(\lambda_i\cdot x_i\right)=\lambda_i\cdot A\cdot x_i=\lambda_i^2\cdot x_i.
\]
Продолжая этот процесс, после \( k \) умножений получим
\[
A^k\cdot x_i=\lambda_i^k\cdot x_i.
\]
Таким образом, возведение матрицы в степень приводит к возведению её собственных значений в ту же степень. Именно это свойство лежит в основе степенного метода.
Степенной Метод: Как Строится Итерационный Процесс
Сначала выбирают ненулевой начальный вектор \( y^{(0)} \). Например, можно взять
\[
y^{(0)}
=
\begin{pmatrix}
1\\
1\\
\vdots\\
1
\end{pmatrix}.
\]
Поскольку собственные векторы матрицы \( A \) образуют базис, начальный вектор можно представить в виде их линейной комбинации:
\[
y^{(0)}=c_1\cdot x_1+c_2\cdot x_2+\dots+c_n\cdot x_n.
\]
Для сходимости метода к собственному вектору \( x_1 \), соответствующему доминирующему собственному значению \( \lambda_1 \), коэффициент при \( x_1 \) не должен быть равен нулю: \( c_1\neq 0 \). Если \( c_1=0 \), то собственный вектор \( x_1 \) не входит в разложение начального вектора. В таком случае многократное умножение на матрицу \( A \) не позволит получить итерационный вектор, направленный вдоль собственного вектора \( x_1 \).
После выбора начального вектора выполняем последовательные умножения на матрицу \( A \):
\[
\begin{gathered}
y^{(1)}=A\cdot y^{(0)},\\[4pt]
y^{(2)}=A\cdot y^{(1)},\\[4pt]
\dots\\[4pt]
y^{(k)}=A\cdot y^{(k-1)}.
\end{gathered}
\]
Для второй итерации имеем
\[
y^{(2)}=A\cdot y^{(1)}=A\cdot A\cdot y^{(0)}=A^2\cdot y^{(0)}.
\]
Аналогично, на \( k \)-й итерации
\[
y^{(k)}=A\cdot y^{(k-1)}=A^k\cdot y^{(0)}.
\]
Поскольку в алгоритме используются последовательные степени матрицы, его называют степенным методом.
Приближённое значение \( \lambda_1 \) можно вычислять с помощью отношения соответствующих компонентов двух соседних векторов:
\[
\lambda_1^{(k)}=\frac{y_j^{(k)}}{y_j^{(k-1)}}.
\]
Здесь \( y_j^{(k-1)} \) и \( y_j^{(k)} \) — компоненты векторов \( y^{(k-1)} \) и \( y^{(k)} \) с одинаковым номером \( j \).
Весь итерационный процесс можно записать следующим образом:
\[
\begin{gathered}
y^{(1)}=A\cdot y^{(0)},
\qquad
\lambda_1^{(1)}=\frac{y_j^{(1)}}{y_j^{(0)}},\\[4pt]
y^{(2)}=A\cdot y^{(1)},
\qquad
\lambda_1^{(2)}=\frac{y_j^{(2)}}{y_j^{(1)}},\\[4pt]
\dots,
\qquad
\dots,\\[4pt]
y^{(k)}=A\cdot y^{(k-1)},
\qquad
\lambda_1^{(k)}=\frac{y_j^{(k)}}{y_j^{(k-1)}}.
\end{gathered}
\]
Номер \( j \) необходимо выбирать так, чтобы знаменатель \( y_j^{(k-1)} \) не был равен нулю и не был слишком мал по модулю. В противном случае деление может оказаться невозможным или неточным.
На практике часто используют компоненту с наибольшим модулем:
\[
|y_j^{(k-1)}|=\max_{1\leq i\leq n}|y_i^{(k-1)}|.
\]
Такой выбор уменьшает риск деления на малое число.
Сходимость Степенного Метода: Как Выделяется Искомый Вектор
Подставим разложение начального вектора в общую формулу итераций:
\[
y^{(k)}=A^k\cdot y^{(0)}.
\]
Поскольку
\[
y^{(0)}=c_1\cdot x_1+c_2\cdot x_2+\dots+c_n\cdot x_n,
\]
то
\[
y^{(k)}=A^k\cdot\left(c_1\cdot x_1+c_2\cdot x_2+\dots+c_n\cdot x_n\right)=c_1\cdot A^k\cdot x_1+c_2\cdot A^k\cdot x_2+\dots+c_n\cdot A^k\cdot x_n.
\]
Используем свойство
\[
A^k\cdot x_i=\lambda_i^k\cdot x_i.
\]
Тогда
\[
y^{(k)}=c_1\cdot\lambda_1^k\cdot x_1+c_2\cdot\lambda_2^k\cdot x_2+\dots+c_n\cdot\lambda_n^k\cdot x_n.
\]
Вынесем \( \lambda_1^k \) за скобки:
\[
y^{(k)}
=
\lambda_1^k\cdot
\left(
c_1\cdot x_1+
c_2\cdot
\left(
\frac{\lambda_2}{\lambda_1}
\right)^k
\cdot x_2+
\dots+
c_n\cdot
\left(
\frac{\lambda_n}{\lambda_1}
\right)^k
\cdot x_n
\right).
\]
Поскольку \( \lambda_1 \) является единственным доминирующим собственным значением, для всех \( i=2,3,\dots,n \) выполняется неравенство
\[
\left|\frac{\lambda_i}{\lambda_1}\right|<1.
\]
Поэтому с увеличением \( k \)
\[
\left(\frac{\lambda_i}{\lambda_1}\right)^k\to 0,\qquad i=2,3,\dots,n.
\]
Таким образом, влияние слагаемых, связанных с собственными векторами \( x_2,x_3,\dots,x_n \), постепенно уменьшается. При достаточно большом \( k \) основную роль в векторе \( y^{(k)} \) играет слагаемое, связанное с \( x_1 \):
\[
y^{(k)}\approx c_1\cdot\lambda_1^k\cdot x_1.
\]
Отсюда следует, что направление итерационного вектора постепенно приближается к направлению собственного вектора \( x_1 \). При этом отношение соответствующих компонентов соседних векторов приближается к доминирующему собственному значению:
\[
\frac{y_j^{(k)}}{y_j^{(k-1)}}\to\lambda_1.
\]
Важно различать приближение итерационного вектора к прямой, задаваемой вектором \( x_1 \), и сходимость его компонентов к конечным значениям.
Если \( |\lambda_1|>1 \), модули компонентов \( y^{(k)} \) могут неограниченно возрастать. Если же \( |\lambda_1|<1 \), они могут стремиться к нулю. Однако соотношения между компонентами стабилизируются, поэтому вектор всё точнее располагается вдоль прямой, задаваемой вектором \( x_1 \).
Скорость сходимости определяется отношением
\[
\frac{|\lambda_2|}{|\lambda_1|}.
\]
Чем меньше это отношение, тем быстрее уменьшается влияние слагаемых, связанных с другими собственными значениями. Если же \( |\lambda_2| \) близок по величине к \( |\lambda_1| \), сходимость будет медленной.
Итерационный процесс можно завершить, когда два соседних приближения собственного значения отличаются не более чем на заданную точность:
\[
\left|\lambda_1^{(k)}-\lambda_1^{(k-1)}\right|\leq\varepsilon.
\]
Здесь \( \varepsilon \) — заданная точность вычислений.
Для более надёжной проверки можно также использовать невязку:
\[
r^{(k)}=A\cdot y^{(k)}-\lambda_1^{(k)}\cdot y^{(k)}.
\]
Если вектор \( y^{(k)} \) не нормирован, целесообразно применять относительный критерий:
\[
\frac{\left\|A\cdot y^{(k)}-\lambda_1^{(k)}\cdot y^{(k)}\right\|}{\left\|y^{(k)}\right\|}\leq\varepsilon.
\]
Этот критерий показывает, насколько точно найденные приближения удовлетворяют уравнению собственных значений
\[
A\cdot y=\lambda\cdot y.
\]
Нормирование Итерационного Вектора: Как Избежать Численных Проблем
В обычном степенном методе компоненты вектора могут становиться слишком большими или слишком малыми. Это создаёт проблемы при компьютерных вычислениях.
Чтобы сохранить устойчивость алгоритма, после каждого умножения полученный вектор нормируют. Сначала вычисляют вспомогательный вектор:
\[
z^{(k)}=A\cdot y^{(k-1)}.
\]
Затем находят приближение собственного значения:
\[
\lambda_1^{(k)}=\frac{z_j^{(k)}}{y_j^{(k-1)}}.
\]
После этого вектор \( z^{(k)} \) приводят к единичной норме:
\[
y^{(k)}=\frac{z^{(k)}}{\left\|z^{(k)}\right\|}.
\]
Таким образом, степенной метод с нормированием имеет вид
\[
z^{(k)}=A\cdot y^{(k-1)},\qquad \lambda_1^{(k)}=\frac{z_j^{(k)}}{y_j^{(k-1)}},\qquad y^{(k)}=\frac{z^{(k)}}{\left\|z^{(k)}\right\|}.
\]
Начальный вектор также целесообразно нормировать. Если сначала выбран ненулевой вектор \( \widetilde{y}^{(0)} \), то
\[
y^{(0)}=\frac{\widetilde{y}^{(0)}}{\left\|\widetilde{y}^{(0)}\right\|}.
\]
Тогда
\[
\left\|y^{(0)}\right\|=1.
\]
Нормирование изменяет длину вектора, но оставляет его на той же прямой, проходящей через начало координат. Поэтому оно не нарушает принцип работы степенного метода.
Если доминирующее собственное значение отрицательно, нормированные векторы могут поочерёдно менять знак:
\[
x_1,\quad -x_1,\quad x_1,\quad -x_1,\quad\dots
\]
Это не является ошибкой, поскольку векторы \( x_1 \) и \( -x_1 \) лежат на одной прямой и соответствуют одному и тому же собственному значению.
На практике также используют вариант метода, в котором приближённое собственное значение вычисляют с помощью скалярного произведения. Сначала выполняют умножение и нормирование:
\[
z^{(k)}=A\cdot y^{(k-1)},\qquad y^{(k)}=\frac{z^{(k)}}{\left\|z^{(k)}\right\|}.
\]
После этого находят приближённое собственное значение:
\[
\lambda_1^{(k)}=\frac{\left(y^{(k)},A\cdot y^{(k)}\right)}{\left(y^{(k)},y^{(k)}\right)}.
\]
Это выражение называют отношением Рэлея.
Поскольку вектор \( y^{(k)} \) нормирован, то \( \left(y^{(k)},y^{(k)}\right)=1 \). Поэтому формула упрощается:
\[
\lambda_1^{(k)}=\left(y^{(k)},A\cdot y^{(k)}\right).
\]
Таким образом, степенной метод последовательно выделяет часть начального вектора, связанную с доминирующим собственным значением. Благодаря нормированию этот процесс можно выполнять без чрезмерного увеличения или уменьшения компонентов итерационного вектора. В результате приближённо находим наибольшее по модулю собственное значение матрицы и соответствующий ему собственный вектор.
Наибольшее по Модулю Собственное Значение Матрицы: Практика Степенного Метода
Теперь рассмотрим, как степенной метод работает для матриц разных порядков. В каждом примере будем нормировать итерационный вектор, находить приближённое собственное значение с помощью отношения Рэлея и сравнивать два соседних приближения.
Пример 1. Найти наибольшее по модулю собственное значение матрицы
\[
A=
\begin{pmatrix}
4 & 1\\
1 & 2
\end{pmatrix}
\]
и соответствующий ему собственный вектор с точностью \( \varepsilon=0.1 \)
В качестве начального приближения выберем вектор
\[
\widetilde{y}^{(0)}
=
\begin{pmatrix}
1\\
1
\end{pmatrix}.
\]
Найдём его евклидову норму:
\[
\left\|\widetilde{y}^{(0)}\right\|=\sqrt{1^2+1^2}=\sqrt{2}.
\]
Нормируем начальный вектор:
\[
y^{(0)}
=
\frac{\widetilde{y}^{(0)}}{\left\|\widetilde{y}^{(0)}\right\|}
=
\frac{1}{\sqrt{2}}
\cdot
\begin{pmatrix}
1\\
1
\end{pmatrix}
\approx
\begin{pmatrix}
0.7071\\
0.7071
\end{pmatrix}.
\]
Выполним первую итерацию:
\[
z^{(1)}=A\cdot y^{(0)}.
\]
Подставим матрицу и начальный вектор:
\[
z^{(1)}
=
\begin{pmatrix}
4 & 1\\
1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.7071\\
0.7071
\end{pmatrix}.
\]
Вычислим компоненты вектора:
\[
z^{(1)}
=
\begin{pmatrix}
4\cdot 0.7071+1\cdot 0.7071\\
1\cdot 0.7071+2\cdot 0.7071
\end{pmatrix}
\approx
\begin{pmatrix}
3.5355\\
2.1213
\end{pmatrix}.
\]
Найдём норму полученного вектора:
\[
\left\|z^{(1)}\right\|=\sqrt{3.5355^2+2.1213^2}\approx 4.1231.
\]
Нормируем вектор:
\[
y^{(1)}
=
\frac{z^{(1)}}{\left\|z^{(1)}\right\|}
=
\frac{1}{4.1231}
\cdot
\begin{pmatrix}
3.5355\\
2.1213
\end{pmatrix}
\approx
\begin{pmatrix}
0.8575\\
0.5145
\end{pmatrix}.
\]
Теперь вычислим произведение \( A\cdot y^{(1)} \):
\[
A\cdot y^{(1)}
=
\begin{pmatrix}
4 & 1\\
1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.8575\\
0.5145
\end{pmatrix}.
\]
Имеем
\[
A\cdot y^{(1)}
=
\begin{pmatrix}
4\cdot 0.8575+1\cdot 0.5145\\
1\cdot 0.8575+2\cdot 0.5145
\end{pmatrix}
\approx
\begin{pmatrix}
3.9445\\
1.8865
\end{pmatrix}.
\]
Найдём первое приближение собственного значения с помощью отношения Рэлея:
\[
\lambda_1^{(1)}=\left(y^{(1)},A\cdot y^{(1)}\right).
\]
Поскольку вектор \( y^{(1)} \) имеет единичную норму, получаем
\[
\lambda_1^{(1)}=0.8575\cdot 3.9445+0.5145\cdot 1.8865\approx 4.3529.
\]
Переходим ко второй итерации. Уже вычисленное произведение \( A\cdot y^{(1)} \) является вектором \( z^{(2)} \):
\[
z^{(2)}
=
\begin{pmatrix}
3.9445\\
1.8865
\end{pmatrix}.
\]
Его норма равна
\[
\left\|z^{(2)}\right\|=\sqrt{3.9445^2+1.8865^2}\approx 4.3724.
\]
Поэтому
\[
y^{(2)}
=
\frac{z^{(2)}}{\left\|z^{(2)}\right\|}
=
\frac{1}{4.3724}
\cdot
\begin{pmatrix}
3.9445\\
1.8865
\end{pmatrix}
\approx
\begin{pmatrix}
0.9021\\
0.4315
\end{pmatrix}.
\]
Вычислим следующее произведение:
\[
A\cdot y^{(2)}
=
\begin{pmatrix}
4 & 1\\
1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.9021\\
0.4315
\end{pmatrix}.
\]
Получим
\[
A\cdot y^{(2)}
=
\begin{pmatrix}
4\cdot 0.9021+1\cdot 0.4315\\
1\cdot 0.9021+2\cdot 0.4315
\end{pmatrix}
\approx
\begin{pmatrix}
4.04\\
1.765
\end{pmatrix}.
\]
Второе приближение собственного значения равно
\[
\lambda_1^{(2)}=\left(y^{(2)},A\cdot y^{(2)}\right)=0.9021\cdot 4.04+0.4315\cdot 1.765\approx 4.4062.
\]
Проверим условие завершения:
\[
\left|\lambda_1^{(2)}-\lambda_1^{(1)}\right|=|4.4062-4.3529|=0.0533.
\]
Поскольку
\[
0.0533\leq 0.1,
\]
итерационный процесс останавливаем.
Таким образом, наибольшее по модулю собственное значение матрицы приближённо равно
\[
\lambda_1\approx 4.4062.
\]
В качестве приближённого собственного вектора, соответствующего найденному собственному значению, берём последний нормированный итерационный вектор:
\[
x_1
\approx
\begin{pmatrix}
0.9021\\
0.4315
\end{pmatrix}.
\]
Пример 2. Найти наибольшее по модулю собственное значение матрицы
\[
A=
\begin{pmatrix}
5 & 1 & 0\\
1 & 3 & 1\\
0 & 1 & 2
\end{pmatrix}
\]
и соответствующий ему собственный вектор с точностью \( \varepsilon=0.1 \)
Выберем начальный вектор
\[
\widetilde{y}^{(0)}
=
\begin{pmatrix}
1\\
1\\
1
\end{pmatrix}.
\]
Его евклидова норма равна
\[
\left\|\widetilde{y}^{(0)}\right\|=\sqrt{1^2+1^2+1^2}=\sqrt{3}.
\]
Нормируем начальный вектор:
\[
y^{(0)}
=
\frac{\widetilde{y}^{(0)}}{\left\|\widetilde{y}^{(0)}\right\|}
=
\frac{1}{\sqrt{3}}
\cdot
\begin{pmatrix}
1\\
1\\
1
\end{pmatrix}
\approx
\begin{pmatrix}
0.5774\\
0.5774\\
0.5774
\end{pmatrix}.
\]
Выполним первую итерацию:
\[
z^{(1)}=A\cdot y^{(0)}.
\]
Подставим матрицу и вектор:
\[
z^{(1)}
=
\begin{pmatrix}
5 & 1 & 0\\
1 & 3 & 1\\
0 & 1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.5774\\
0.5774\\
0.5774
\end{pmatrix}.
\]
Вычислим компоненты:
\[
z^{(1)}
=
\begin{pmatrix}
5\cdot 0.5774+1\cdot 0.5774+0\cdot 0.5774\\
1\cdot 0.5774+3\cdot 0.5774+1\cdot 0.5774\\
0\cdot 0.5774+1\cdot 0.5774+2\cdot 0.5774
\end{pmatrix}
\approx
\begin{pmatrix}
3.4641\\
2.8868\\
1.7321
\end{pmatrix}.
\]
Найдём норму:
\[
\left\|z^{(1)}\right\|=\sqrt{3.4641^2+2.8868^2+1.7321^2}\approx 4.8305.
\]
Тогда
\[
y^{(1)}
=
\frac{z^{(1)}}{\left\|z^{(1)}\right\|}
=
\frac{1}{4.8305}
\cdot
\begin{pmatrix}
3.4641\\
2.8868\\
1.7321
\end{pmatrix}
\approx
\begin{pmatrix}
0.7171\\
0.5976\\
0.3586
\end{pmatrix}.
\]
Найдём произведение \( A\cdot y^{(1)} \):
\[
A\cdot y^{(1)}
=
\begin{pmatrix}
5 & 1 & 0\\
1 & 3 & 1\\
0 & 1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.7171\\
0.5976\\
0.3586
\end{pmatrix}.
\]
После умножения имеем
\[
A\cdot y^{(1)}
=
\begin{pmatrix}
5\cdot 0.7171+1\cdot 0.5976+0\cdot 0.3586\\
1\cdot 0.7171+3\cdot 0.5976+1\cdot 0.3586\\
0\cdot 0.7171+1\cdot 0.5976+2\cdot 0.3586
\end{pmatrix}
\approx
\begin{pmatrix}
4.1833\\
2.8685\\
1.3148
\end{pmatrix}.
\]
Вычислим первое приближение собственного значения:
\[
\lambda_1^{(1)}=\left(y^{(1)},A\cdot y^{(1)}\right)=0.7171\cdot 4.1833+0.5976\cdot 2.8685+0.3586\cdot 1.3148\approx 5.1857.
\]
Переходим ко второй итерации:
\[
z^{(2)}
=
\begin{pmatrix}
4.1833\\
2.8685\\
1.3148
\end{pmatrix}.
\]
Найдём норму:
\[
\left\|z^{(2)}\right\|=\sqrt{4.1833^2+2.8685^2+1.3148^2}\approx 5.24.
\]
Нормируем вектор:
\[
y^{(2)}
=
\frac{z^{(2)}}{\left\|z^{(2)}\right\|}
=
\frac{1}{5.24}
\cdot
\begin{pmatrix}
4.1833\\
2.8685\\
1.3148
\end{pmatrix}
\approx
\begin{pmatrix}
0.7983\\
0.5474\\
0.2509
\end{pmatrix}.
\]
Вычислим
\[
A\cdot y^{(2)}
=
\begin{pmatrix}
5 & 1 & 0\\
1 & 3 & 1\\
0 & 1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.7983\\
0.5474\\
0.2509
\end{pmatrix}.
\]
Получим
\[
A\cdot y^{(2)}
=
\begin{pmatrix}
5\cdot 0.7983+1\cdot 0.5474+0\cdot 0.2509\\
1\cdot 0.7983+3\cdot 0.5474+1\cdot 0.2509\\
0\cdot 0.7983+1\cdot 0.5474+2\cdot 0.2509
\end{pmatrix}
\approx
\begin{pmatrix}
4.5392\\
2.6916\\
1.0493
\end{pmatrix}.
\]
Второе приближение собственного значения равно
\[
\lambda_1^{(2)}=\left(y^{(2)},A\cdot y^{(2)}\right)=0.7983\cdot 4.5392+0.5474\cdot 2.6916+0.2509\cdot 1.0493\approx 5.3606.
\]
Проверим условие завершения:
\[
\left|\lambda_1^{(2)}-\lambda_1^{(1)}\right|=|5.3606-5.1857|=0.1749.
\]
Поскольку
\[
0.1749>0.1,
\]
необходимо выполнить ещё одну итерацию.
Имеем
\[
z^{(3)}
=
\begin{pmatrix}
4.5392\\
2.6916\\
1.0493
\end{pmatrix}.
\]
Найдём норму:
\[
\left\|z^{(3)}\right\|=\sqrt{4.5392^2+2.6916^2+1.0493^2}\approx 5.3805.
\]
Тогда
\[
y^{(3)}
=
\frac{z^{(3)}}{\left\|z^{(3)}\right\|}
=
\frac{1}{5.3805}
\cdot
\begin{pmatrix}
4.5392\\
2.6916\\
1.0493
\end{pmatrix}
\approx
\begin{pmatrix}
0.8436\\
0.5002\\
0.195
\end{pmatrix}.
\]
Вычислим
\[
A\cdot y^{(3)}
=
\begin{pmatrix}
5 & 1 & 0\\
1 & 3 & 1\\
0 & 1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.8436\\
0.5002\\
0.195
\end{pmatrix}.
\]
Имеем
\[
A\cdot y^{(3)}
=
\begin{pmatrix}
5\cdot 0.8436+1\cdot 0.5002+0\cdot 0.195\\
1\cdot 0.8436+3\cdot 0.5002+1\cdot 0.195\\
0\cdot 0.8436+1\cdot 0.5002+2\cdot 0.195
\end{pmatrix}
\approx
\begin{pmatrix}
4.7184\\
2.5394\\
0.8903
\end{pmatrix}.
\]
Третье приближение собственного значения равно
\[
\lambda_1^{(3)}=\left(y^{(3)},A\cdot y^{(3)}\right)=0.8436\cdot 4.7184+0.5002\cdot 2.5394+0.195\cdot 0.8903\approx 5.4246.
\]
Проверим условие завершения:
\[
\left|\lambda_1^{(3)}-\lambda_1^{(2)}\right|=|5.4246-5.3606|=0.064.
\]
Поскольку
\[
0.064\leq 0.1,
\]
итерационный процесс останавливаем.
Таким образом, наибольшее по модулю собственное значение матрицы приближённо равно
\[
\lambda_1\approx 5.4246.
\]
В качестве приближённого собственного вектора, соответствующего найденному собственному значению, берём последний нормированный итерационный вектор:
\[
x_1
\approx
\begin{pmatrix}
0.8436\\
0.5002\\
0.195
\end{pmatrix}.
\]
Пример 3. Найти наибольшее по модулю собственное значение матрицы
\[
A=
\begin{pmatrix}
6 & 1 & 0 & 0\\
1 & 4 & 1 & 0\\
0 & 1 & 3 & 1\\
0 & 0 & 1 & 2
\end{pmatrix}
\]
и соответствующий ему собственный вектор с точностью \( \varepsilon=0.1 \)
Выберем начальный вектор
\[
\widetilde{y}^{(0)}
=
\begin{pmatrix}
1\\
1\\
1\\
1
\end{pmatrix}.
\]
Его евклидова норма равна
\[
\left\|\widetilde{y}^{(0)}\right\|=\sqrt{1^2+1^2+1^2+1^2}=2.
\]
Поэтому нормированный начальный вектор имеет вид
\[
y^{(0)}
=
\frac{\widetilde{y}^{(0)}}{\left\|\widetilde{y}^{(0)}\right\|}
=
\frac{1}{2}
\cdot
\begin{pmatrix}
1\\
1\\
1\\
1
\end{pmatrix}
=
\begin{pmatrix}
0.5\\
0.5\\
0.5\\
0.5
\end{pmatrix}.
\]
Выполним первую итерацию:
\[
z^{(1)}=A\cdot y^{(0)}.
\]
Подставим матрицу и вектор:
\[
z^{(1)}
=
\begin{pmatrix}
6 & 1 & 0 & 0\\
1 & 4 & 1 & 0\\
0 & 1 & 3 & 1\\
0 & 0 & 1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.5\\
0.5\\
0.5\\
0.5
\end{pmatrix}.
\]
После умножения получим
\[
z^{(1)}
=
\begin{pmatrix}
6\cdot 0.5+1\cdot 0.5+0\cdot 0.5+0\cdot 0.5\\
1\cdot 0.5+4\cdot 0.5+1\cdot 0.5+0\cdot 0.5\\
0\cdot 0.5+1\cdot 0.5+3\cdot 0.5+1\cdot 0.5\\
0\cdot 0.5+0\cdot 0.5+1\cdot 0.5+2\cdot 0.5
\end{pmatrix}
=
\begin{pmatrix}
3.5\\
3\\
2.5\\
1.5
\end{pmatrix}.
\]
Найдём норму:
\[
\left\|z^{(1)}\right\|=\sqrt{3.5^2+3^2+2.5^2+1.5^2}\approx 5.4544.
\]
Тогда
\[
y^{(1)}
=
\frac{z^{(1)}}{\left\|z^{(1)}\right\|}
=
\frac{1}{5.4544}
\cdot
\begin{pmatrix}
3.5\\
3\\
2.5\\
1.5
\end{pmatrix}
\approx
\begin{pmatrix}
0.6417\\
0.55\\
0.4583\\
0.275
\end{pmatrix}.
\]
Вычислим произведение
\[
A\cdot y^{(1)}
=
\begin{pmatrix}
6 & 1 & 0 & 0\\
1 & 4 & 1 & 0\\
0 & 1 & 3 & 1\\
0 & 0 & 1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.6417\\
0.55\\
0.4583\\
0.275
\end{pmatrix}.
\]
Имеем
\[
A\cdot y^{(1)}
=
\begin{pmatrix}
6\cdot 0.6417+1\cdot 0.55+0\cdot 0.4583+0\cdot 0.275\\
1\cdot 0.6417+4\cdot 0.55+1\cdot 0.4583+0\cdot 0.275\\
0\cdot 0.6417+1\cdot 0.55+3\cdot 0.4583+1\cdot 0.275\\
0\cdot 0.6417+0\cdot 0.55+1\cdot 0.4583+2\cdot 0.275
\end{pmatrix}
\approx
\begin{pmatrix}
4.4002\\
3.3001\\
2.2001\\
1.0084
\end{pmatrix}.
\]
Первое приближение собственного значения равно
\[
\lambda_1^{(1)}=\left(y^{(1)},A\cdot y^{(1)}\right)=0.6417\cdot 4.4002+0.55\cdot 3.3001+0.4583\cdot 2.2001+0.275\cdot 1.0084\approx 5.9244.
\]
На второй итерации имеем
\[
z^{(2)}
=
\begin{pmatrix}
4.4002\\
3.3001\\
2.2001\\
1.0084
\end{pmatrix}.
\]
Его норма равна
\[
\left\|z^{(2)}\right\|=\sqrt{4.4002^2+3.3001^2+2.2001^2+1.0084^2}\approx 6.0091.
\]
Поэтому
\[
y^{(2)}
=
\frac{z^{(2)}}{\left\|z^{(2)}\right\|}
=
\frac{1}{6.0091}
\cdot
\begin{pmatrix}
4.4002\\
3.3001\\
2.2001\\
1.0084
\end{pmatrix}
\approx
\begin{pmatrix}
0.7322\\
0.5492\\
0.3661\\
0.1678
\end{pmatrix}.
\]
Вычислим
\[
A\cdot y^{(2)}
=
\begin{pmatrix}
6 & 1 & 0 & 0\\
1 & 4 & 1 & 0\\
0 & 1 & 3 & 1\\
0 & 0 & 1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.7322\\
0.5492\\
0.3661\\
0.1678
\end{pmatrix}.
\]
После умножения получим
\[
A\cdot y^{(2)}
=
\begin{pmatrix}
6\cdot 0.7322+1\cdot 0.5492+0\cdot 0.3661+0\cdot 0.1678\\
1\cdot 0.7322+4\cdot 0.5492+1\cdot 0.3661+0\cdot 0.1678\\
0\cdot 0.7322+1\cdot 0.5492+3\cdot 0.3661+1\cdot 0.1678\\
0\cdot 0.7322+0\cdot 0.5492+1\cdot 0.3661+2\cdot 0.1678
\end{pmatrix}
\approx
\begin{pmatrix}
4.9427\\
3.2951\\
1.8154\\
0.7017
\end{pmatrix}.
\]
Второе приближение собственного значения равно
\[
\lambda_1^{(2)}=\left(y^{(2)},A\cdot y^{(2)}\right)=0.7322\cdot 4.9427+0.5492\cdot 3.2951+0.3661\cdot 1.8154+0.1678\cdot 0.7017\approx 6.2113.
\]
Проверим условие завершения:
\[
\left|\lambda_1^{(2)}-\lambda_1^{(1)}\right|=|6.2113-5.9244|=0.2869.
\]
Поскольку
\[
0.2869>0.1,
\]
продолжаем вычисления.
На третьей итерации
\[
z^{(3)}
=
\begin{pmatrix}
4.9427\\
3.2951\\
1.8154\\
0.7017
\end{pmatrix}.
\]
Найдём норму:
\[
\left\|z^{(3)}\right\|=\sqrt{4.9427^2+3.2951^2+1.8154^2+0.7017^2}\approx 6.2511.
\]
Тогда
\[
y^{(3)}
=
\frac{z^{(3)}}{\left\|z^{(3)}\right\|}
=
\frac{1}{6.2511}
\cdot
\begin{pmatrix}
4.9427\\
3.2951\\
1.8154\\
0.7017
\end{pmatrix}
\approx
\begin{pmatrix}
0.7907\\
0.5271\\
0.2904\\
0.1123
\end{pmatrix}.
\]
Вычислим следующее произведение:
\[
A\cdot y^{(3)}
=
\begin{pmatrix}
6 & 1 & 0 & 0\\
1 & 4 & 1 & 0\\
0 & 1 & 3 & 1\\
0 & 0 & 1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.7907\\
0.5271\\
0.2904\\
0.1123
\end{pmatrix}.
\]
Получим
\[
A\cdot y^{(3)}
=
\begin{pmatrix}
6\cdot 0.7907+1\cdot 0.5271+0\cdot 0.2904+0\cdot 0.1123\\
1\cdot 0.7907+4\cdot 0.5271+1\cdot 0.2904+0\cdot 0.1123\\
0\cdot 0.7907+1\cdot 0.5271+3\cdot 0.2904+1\cdot 0.1123\\
0\cdot 0.7907+0\cdot 0.5271+1\cdot 0.2904+2\cdot 0.1123
\end{pmatrix}
\approx
\begin{pmatrix}
5.2713\\
3.1896\\
1.5106\\
0.5149
\end{pmatrix}.
\]
Третье приближение собственного значения равно
\[
\lambda_1^{(3)}=\left(y^{(3)},A\cdot y^{(3)}\right)=0.7907\cdot 5.2713+0.5271\cdot 3.1896+0.2904\cdot 1.5106+0.1123\cdot 0.5149\approx 6.3458.
\]
Проверим разность:
\[
\left|\lambda_1^{(3)}-\lambda_1^{(2)}\right|=|6.3458-6.2113|=0.1345.
\]
Поскольку
\[
0.1345>0.1,
\]
необходимо выполнить четвёртую итерацию.
Имеем
\[
z^{(4)}
=
\begin{pmatrix}
5.2713\\
3.1896\\
1.5106\\
0.5149
\end{pmatrix}.
\]
Его норма равна
\[
\left\|z^{(4)}\right\|=\sqrt{5.2713^2+3.1896^2+1.5106^2+0.5149^2}\approx 6.3645.
\]
Поэтому
\[
y^{(4)}
=
\frac{z^{(4)}}{\left\|z^{(4)}\right\|}
=
\frac{1}{6.3645}
\cdot
\begin{pmatrix}
5.2713\\
3.1896\\
1.5106\\
0.5149
\end{pmatrix}
\approx
\begin{pmatrix}
0.8282\\
0.5012\\
0.2373\\
0.0809
\end{pmatrix}.
\]
Вычислим
\[
A\cdot y^{(4)}
=
\begin{pmatrix}
6 & 1 & 0 & 0\\
1 & 4 & 1 & 0\\
0 & 1 & 3 & 1\\
0 & 0 & 1 & 2
\end{pmatrix}
\cdot
\begin{pmatrix}
0.8282\\
0.5012\\
0.2373\\
0.0809
\end{pmatrix}.
\]
После умножения имеем
\[
A\cdot y^{(4)}
=
\begin{pmatrix}
6\cdot 0.8282+1\cdot 0.5012+0\cdot 0.2373+0\cdot 0.0809\\
1\cdot 0.8282+4\cdot 0.5012+1\cdot 0.2373+0\cdot 0.0809\\
0\cdot 0.8282+1\cdot 0.5012+3\cdot 0.2373+1\cdot 0.0809\\
0\cdot 0.8282+0\cdot 0.5012+1\cdot 0.2373+2\cdot 0.0809
\end{pmatrix}
\approx
\begin{pmatrix}
5.4705\\
3.0702\\
1.2941\\
0.3992
\end{pmatrix}.
\]
Четвёртое приближение собственного значения равно
\[
\lambda_1^{(4)}=\left(y^{(4)},A\cdot y^{(4)}\right)=0.8282\cdot 5.4705+0.5012\cdot 3.0702+0.2373\cdot 1.2941+0.0809\cdot 0.3992\approx 6.4089.
\]
Проверим условие завершения:
\[
\left|\lambda_1^{(4)}-\lambda_1^{(3)}\right|=|6.4089-6.3458|=0.0631.
\]
Поскольку
\[
0.0631\leq 0.1,
\]
итерационный процесс останавливаем.
Таким образом, наибольшее по модулю собственное значение матрицы приближённо равно
\[
\lambda_1\approx 6.4089.
\]
В качестве приближённого собственного вектора, соответствующего найденному собственному значению, берём последний нормированный итерационный вектор:
\[
x_1
\approx
\begin{pmatrix}
0.8282\\
0.5012\\
0.2373\\
0.0809
\end{pmatrix}.
\]
Что Изучать Дальше: Методы для Новых Задач
После степенного метода стоит перейти к способам, которые решают другие задачи спектрального анализа. Они помогут находить следующие собственные значения и работать с матрицами специального вида.
- Метод исчерпывания: Как найти второе собственное значение — В статье будет показано, как после нахождения доминирующего собственного значения перейти к вычислению следующего.
- Метод вращения: Как исследовать симметричную матрицу — Материал объяснит, как последовательные ортогональные преобразования приводят симметричную матрицу к почти диагональному виду.
- Метод половинного деления: Как работать с трёхдиагональной матрицей — Статья расскажет, как сужать интервалы поиска и приближённо определять спектр симметричной трёхдиагональной матрицы.
Наибольшее по Модулю Собственное Значение Матрицы: Реализуйте Алгоритм Самостоятельно
Если вам нравится программирование, попробуйте превратить блок-схему в полноценную программу на своём любимом языке. Такая практика поможет лучше понять, как степенной метод переходит от математических формул к последовательным вычислениям, а также позволит проверить работу алгоритма для разных матриц и при разных значениях точности.
