5. Aлгебраїчна проблема власних значень

Нехай задано матрицю . Тоді задача на власні значення ставиться так: знайти число та вектор , що задовольняють рівнянню

\begin{equation} \label{eq:5.1} A x - \lambda x. \end{equation}

Означення: називається власним значенням , а власним вектором.

З \eqref{eq:5.1}

\begin{equation} \det (A - \lambda E) = P_n(\lambda) = (-1)^n \lambda^n + a_n \lambda^{n - 1} + \ldots + a_0 = 0. \end{equation}

Тут — характеристичний багаточлен.

Для розв’язання багатьох задач механіки, фізики, хімії потрібне знаходження всіх власних значень , , а іноді й всіх власних векторів , що відповідають .

Означення: Цю задачу називають повною проблемою власних значень.

В багатьох випадках потрібно знайти лише максимальне або мінімальне за модулем власне значення матриці. При дослідженні стійкості коливальних процесів іноді потрібно знайти два максимальних за модулем власних значення матриці.

Означення: Останні дві задачі називають частковими проблемами власних значень.

5.1. Степеневий метод

  1. Знаходження : .

    Нехай — заданий вектор, будемо послідовно обчислювати вектори

    \begin{equation} \label{eq:5.1.2} x^{(k + 1)} = A x^{(k)}, \quad k = 0, 1, \ldots \end{equation}

    Тоді . Нехай — система власних векторів. Представимо у вигляді:

    \begin{equation} x^{(0)} = \Sum_{i=1}^n c_i e_i. \end{equation}

    Оскільки , то . При великах : . Тому

    \begin{equation} \mu_1^{(k)} = \frac{x_m^{(k+1)}}{x_m^{(k)}} = \lambda_1 + O \left( \left| \frac{\lambda_2}{\lambda_1} \right|^k \right). \end{equation}

    Значить .

    Якщо матриця симетрична, то існує ортонормована система векторів . Тому

    \begin{equation} \begin{aligned} \mu_1^{(k)} &= \frac{\left\langle x^{(k + 1)}, x^{(k)} \right\rangle}{\left\langle x^{(k)}, x^{(k)}\right\rangle} = \frac{\left\langle \Sum_i c_i \lambda_i^{k + 1} e_i, \Sum_j c_j \lambda_j^k e_j \right\rangle}{\left\langle \Sum_i c_i \lambda_i^k e_i, \Sum_j c_j \lambda_j^k e_j \right\rangle} = \frac{\Sum_i c_i^2 \lambda_i^{2k + 1}}{\Sum_i c_i^2 \lambda_i^{2k}} = \newline &= \frac{c_1^2 \lambda_1^{2 k + 1} + c_2^2 \lambda_2^{2 k + 1} + \ldots }{c_1^2 \lambda_1^{2 k} + c_2^2 \lambda_2^{2 k} + \ldots } = \lambda_1 + O \left( \left| \frac{\lambda_2}{\lambda_1} \right|^{2k} \right) \xrightarrow[k \to \infty]{} \lambda_1. \end{aligned} \end{equation}

    Це означає збіжність до максимального за модулем власного значення з квадратичною швидкістю.

    Якщо , то при проведенні ітерацій відбувається зріст компонент вектора , що приводить до «переповнення» (overflow). Якщо ж , то це приводить до зменшення компонент (underflow). Позбутися негативу такого явища можна нормуючи вектори на кожній ітерації.

    Aлгоритм степеневого методу знаходження максимального за модулем власного значення з точністю виглядає так:

     e[0] = x[0] / norm(x[0])
    
     k = 0
     while True:
         k += 1
    
         x[k + 1] = A * x[k]
         μ[k][1] = scalar_product(x[k + 1], e[k])
         e[k + 1] = x[k + 1] / norm(x[k + 1])
    
         if abs(μ[k + 1][1] - μ[k][1]) < ε:
             break
    
     λ[1] = μ[k + 1][1]
    

    За цим алгоритмом для симетричної матриці швидкість прямування до — квадратична.

  2. Знаходження : . Нехай , відомі.

    Задача 10: Довести, що якщо \(\vert \lambda_1 \vert \ge \vert \lambda_2 \vert \ge \vert \lambda_3 \vert \ge \ldots\) то \begin{equation} \mu_2^{(k)} = \frac{x_m^{(k+1)} - \lambda_1 x_m^{(k)}}{x_m^{(k)} - \lambda_1 x_m^{(k - 1)}} \xrightarrow[k \to \infty]{} \lambda_2, \end{equation} де \(x^{(k + 1)} = A x^{(k)}\), \(x_m^{(k)}\) — \(m\)-та компонента \(x^{(k)}\).

    Задача 11: Побудувати алгоритм обчислення , , використовуючи нормування векторів та скалярні добутки для обчислення .

  3. Знаходження мінімального власного числа .

    Припустимо , що то відоме . Розглянемо матрицю . Маємо

    \begin{equation} \forall i: \quad \lambda_i(B) = \lambda_\max - \lambda_i(A). \end{equation}

    Тому . Звідси .

    Якщо : , то будуємо матрицю , : і для неї попередній розгляд дає необхідний результат. Замість в матриці можна використовувати .

    Ще один спосіб обчислення мінімального власного значення полягає в використання обернених ітерацій:

    \begin{equation} \label{eq:5.1.3} A x^{(k + 1)} = x^{(k)}, \quad k = 0, 1, \ldots \end{equation}

    Aле цей метод вимагає більшої кількості арифметичних операцій: складність методу на основі формули \eqref{eq:5.1.2}: , а на основі \eqref{eq:5.1.3} — , оскільки треба розв’язувати СЛAР, але збігається метод \eqref{eq:5.1.3} швидше.

5.2. Ітераційний метод обертання

Це метод розв’язання повної проблеми власних значень для симетричних матриць . Існує матриця , що приводить матрицю до діагонального виду:

\begin{equation} A = U \Lambda U^\intercal, \end{equation}

де — діагональна матриця, по діагоналі якої стоять власні значення ; — унітарна матриця, тобто: .

З \eqref{eq:5.1} маємо

\begin{equation} \Lambda = U^\intercal A U. \end{equation}

Нехай — матриця, така що і , , .

Тоді діагональні елементи мало відрізняються від власних значень

\begin{equation} \left| \tilde \lambda_{ij} - \lambda_i (A) \right| < \varepsilon = \varepsilon(\delta). \end{equation}

Введемо

\begin{equation} t(A) = \Sum_{\substack{i, j = 1 \\ i \ne j}}^n a_{ij}^2. \end{equation}

З малості величини випливає, що діагональні елементи малі. По за допомогою матриць обертання :

\begin{equation} U_k = \begin{pmatrix} 1 & \cdots & 0 & \cdots & 0 & \cdots & 0 \newline \vdots & \ddots & \vdots & \ddots & \vdots & \ddots & \vdots \newline 0 & \cdots & \cos \phi & \cdots & -\sin \phi & \cdots & 0 \newline \vdots & \ddots & \vdots & \ddots & \vdots & \ddots & \vdots \newline 0 & \cdots & \sin \phi & \cdots & \cos \phi & \cdots & 0 \newline \vdots & \ddots & \vdots & \ddots & \vdots & \ddots & \vdots \newline 0 & \cdots & 0 & \cdots & 0 & \cdots & 1 \end{pmatrix}. \end{equation}

що повертають систему векторів на кут , побудуємо послідовність таку, що .

Задача 12: Показати, що матриця обертання є унітарною: .

Послідовно будуємо:

\begin{equation} \label{eq:5.2.3} A_{k+1} = U_K^T A_k U_k, \end{equation}

Означення: Процес \eqref{eq:5.2.3} називається монотонним, якщо: .

Задача 13: Довести, що для матриці \eqref{eq:5.2.3} виконується:

\begin{equation} \label{eq:5.2.4} a_{i,j}^{(k+1)} = a_{i,j}^{(k)} \cos (2 \varphi) + \frac{1}{2} \left(a_{j,j}^{(k)} - a_{i,i}^{(k)}\right) \sin (2 \varphi), \end{equation}

Показати, що

\begin{equation} t(A_{k + 1}) = t(A_k) - 2\left(a_{i,j}^{(k)}\right)^2 \end{equation}

якщо вибирати з умови .

Звідси

\begin{equation} \varphi = \varphi_k = \frac{1}{2} \arctan \left(p^{(k)}\right), \end{equation}

тобто

\begin{equation} p^{(k)} = \frac{2a_{i,j}^{(k)}}{a_{i,i}^{(k)}-a_{j,j}^{(k)}}, \end{equation}

де

\begin{equation} \left|a_{i,j}^{(k)}\right| = \Max_{\substack{m, l \\ m \ne l}} \left|a_{m,l}^{(k)}\right|. \end{equation}

Тоді . Чим більше тим більше ітерацій необхідно для зведення до .

Якщо матриця несиметрична, то застосовують QR- або QL-методи.