Нахождение собственных значений и собственных векторов матрицы методом Якоби
В линейной алгебре задача нахождения собственных значений и соответствующих им собственных векторов является одной из важнейших. Она находит применение в физике (колебания систем), инженерии, экономике, компьютерной графике и машинном обучении (например, в методе главных компонент PCA).
Метод Якоби (также известный как метод вращений Якоби) — это надежный и точный численный алгоритм для вычисления полного спектра (всех собственных значений и векторов) симметричной матрицы. Если вам необходимо быстро получить результат, вы можете воспользоваться нашим удобным онлайн-калькулятором, а ниже представлено подробное описание теории и алгоритма.
Суть метода вращений Якоби
Алгоритм основан на свойстве симметричных матриц: они всегда могут быть диагонализированы с помощью ортогонального преобразования подобия. Грубо говоря, метод Якоби «вращает» матрицу в многомерном пространстве до тех пор, пока все её внедиагональные элементы не станут пренебрежимо малыми (близкими к нулю).
Это достигается за счет последовательного применения элементарных ортогональных матриц вращения (матриц Якоби). В результате итерационного процесса исходная матрица $A$ преобразуется в диагональную матрицу $D$:
D = VT * A * V
Где:
- D — диагональная матрица, элементы на главной диагонали которой являются искомыми собственными значениями.
- V — результирующая матрица вращений, столбцы которой являются собственными векторами, соответствующими этим значениям.
- VT — транспонированная матрица V.
Подробный алгоритм метода Якоби
Для реализации метода необходимо выполнить следующие шаги:
- Подготовка: Задать исходную симметричную матрицу $A$ размерностью $n \times n$. Определить требуемую точность вычислений $\epsilon$ (epsilon) — критерий остановки алгоритма (например, $10^{-6}$).
- Инициализация матрицы векторов: Создать начальную матрицу собственных векторов $V$, приравняв её к единичной матрице $I$ размера $n \times n$.
- Итерационный процесс: Повторять цикл до тех пор, пока максимальный по модулю внедиагональный элемент матрицы $A$ не станет меньше $\epsilon$.
- а) Поиск максимального элемента: Найти наибольший по абсолютному значению внедиагональный элемент $a_{ij}$ (где $i \neq j$). Обычно ищут в верхнем треугольнике матрицы, так как она симметрична.
- б) Расчет угла вращения: Вычислить угол $\phi$ (phi), который обнулит элемент $a_{ij}$. Формула зависит от значений диагональных элементов $a_{ii}$ и $a_{jj}$:
- Если $a_{ii} = a_{jj}$, то угол $\phi = \pi / 4$ (или $45^\circ$).
- В общем случае используется формула:
tg(2φ) = 2 * aij / (aii - ajj)
Отсюда находится $\phi$, а затем $\cos(\phi)$ и $\sin(\phi)$.
- в) Создание матрицы вращения P: Конструируется матрица $P$, идентичная единичной, за исключением четырех элементов:
Pii = cos(φ) Pjj = cos(φ) Pij = -sin(φ) Pji = sin(φ)
- г) Обновление матриц: Выполнить преобразование текущей матрицы $A$ и накопление векторов в матрицы $V$:
Anew = PT * Aold * P Vnew = Vold * P
Примечание: На практике полные матричные умножения не проводят, а используют оптимизированные формулы для пересчета только изменяемых строк и столбцов.
- Финализация: После завершения цикла (когда внедиагональные элементы подавлены):
- Элементы на главной диагонали матрицы $A$ — это вычисленные **собственные значения**.
- Столбцы матрицы $V$ — это соответствующие им **собственные векторы**.
Пример вычисления собственных значений и векторов
Рассмотрим применение одной итерации метода для симметричной матрицы 3×3:
| 4 -2 2 |
A = | -2 5 0 |
| 2 0 6 |
Ход решения:
- Начальная матрица собственных векторов $V = I$.
- Выбираем максимальный внедиагональный элемент. В данном случае это $a_{01} = -2$ (или $a_{10}$, или $a_{02}$). Выберем позицию $(0, 1)$, то есть $i=0, j=1$.
- Элементы $a_{00} = 4$, $a_{11} = 5$.
- Вычисляем угол $\phi$:
tg(2φ) = 2 * (-2) / (4 - 5) = -4 / -1 = 4
Отсюда $2\phi = \text{arctg}(4) \approx 1.3258$ рад.
φ ≈ 0.6629 рад.
Вычисляем: $c = \cos(\phi) \approx 0.7882$, $s = \sin(\phi) \approx 0.6154$.
- Строим матрицу вращения $P_{01}$:
| 0.7882 -0.6154 0 | P01 = | 0.6154 0.7882 0 | | 0 0 1 | - Обновляем матрицу A ($A_{1} = P^T A P$):
| 2.438 0 1.576 | A1 ≈ | 0 6.562 1.231 | | 1.576 1.231 6 |Заметьте, элементы $a_{01}$ и $a_{10}$ стали нулевыми.
- Обновляем матрицу V ($V_{1} = V P = P$ на первой итерации).
- Процесс повторяется. Теперь максимальный элемент $a_{02} = 1.576$. Выполняется вращение в плоскости $(0, 2)$, обнуляя этот элемент, но при этом элемент $a_{01}$ снова может стать ненулевым (но меньшим, чем был).
После достаточного количества итераций (сходимости) диагональ матрицы $A$ примет вид искомых собственных значений, а столбцы $V$ — векторов. Для данной матрицы точные собственные значения: $\lambda \approx [8.27, 4.41, 2.32]$. Столбцы матрицы $V$ будут соответствовать этим значениям.
Преимущества и ограничения метода
- Преимущества: Высокая точность, гарантированная сходимость для симметричных матриц, находит сразу весь спектр (все значения и векторы), алгоритм численно устойчив.
- Недостатки: Является итерационным, поэтому может быть медленнее прямых методов (например, QR-алгоритма) для очень больших матриц. Применим *только* к симметричным (или эрмитовым в комплексном случае) матрицам.
Заключение
Метод Якоби — это классический, надежный численный алгоритм линейной алгебры. Понимание принципа последовательных вращений для подавления внедиагональных элементов позволяет эффективно решать задачи спектрального анализа. Наш онлайн-калькулятор реализует этот алгоритм с высокой точностью, избавляя вас от рутинных пересчетов матриц.