Власні значення матриці можна знаходити не лише через характеристичний многочлен. У чисельних методах часто використовують інший підхід: початкову матрицю поступово замінюють подібними до неї матрицями, які мають ті самі власні значення. У процесі обчислень ці матриці наближаються до трикутного вигляду. Для трикутної матриці власні значення вже легко визначити за головною діагоналлю.
Власні Значення Матриці: Чому Допомагає Трикутна Форма
Почнемо з простого питання. Чому в задачі на власні значення так часто прагнуть отримати саме трикутну матрицю?
Причина в тому, що власні значення трикутної матриці дорівнюють її діагональним елементам. Тобто замість складних обчислень достатньо знайти елементи головної діагоналі.
Наприклад, нехай маємо трикутну матрицю
\[
T=
\begin{pmatrix}
\lambda_1 & 0 & \dots & 0\\
t_{21} & \lambda_2 & \dots & 0\\
\vdots & \vdots & \ddots & \vdots\\
t_{n1} & t_{n2} & \dots & \lambda_n
\end{pmatrix}.
\]
Тоді її характеристичний визначник має вигляд
\[
\det(T-\lambda I)=(\lambda_1-\lambda)\cdot(\lambda_2-\lambda)\cdot\dots\cdot(\lambda_n-\lambda).
\]
Отже, корені характеристичного рівняння збігаються з діагональними елементами матриці. Тому власні значення матриці \( T \) дорівнюють
\[
\lambda_1,\lambda_2,\dots,\lambda_n.
\]
Звідси й виникає основна ідея методу. Якщо початкову матрицю \( A \) поступово наблизити до трикутної матриці, то власні значення можна буде знайти значно простіше.
Але тут одразу з’являється важливе уточнення. Не можна змінювати матрицю як завгодно. Потрібно, щоб під час перетворень її власні значення зберігалися. Саме тому використовують подібні матриці. Якщо матриці подібні, то вони мають однакові власні значення.
Отже, задача зводиться до такого: побудувати послідовність подібних матриць, яка поступово переходить до зручнішого, трикутного вигляду.
LU-Розкладання Матриці: Як Знайти L та U
Тепер з’ясуємо, за допомогою чого будується така послідовність. У цьому методі використовується LU-розкладання.
Нехай задано квадратну матрицю \( A \) розмірності \( n\times 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=L\cdot U,
\]
де \( L \) — нижня трикутна матриця, а \( U \) — верхня трикутна матриця.
Для визначеності використаємо варіант, у якому діагональні елементи матриці \( U \) дорівнюють одиниці: \( u_{ii}=1 \).
Тоді матриці \( L \) та \( U \) мають вигляд
\[
L=
\begin{pmatrix}
l_{11} & 0 & \dots & 0\\
l_{21} & l_{22} & \dots & 0\\
\vdots & \vdots & \ddots & \vdots\\
l_{n1} & l_{n2} & \dots & l_{nn}
\end{pmatrix},\qquad
U=
\begin{pmatrix}
1 & u_{12} & \dots & u_{1n}\\
0 & 1 & \dots & u_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
0 & 0 & \dots & 1
\end{pmatrix}.
\]
Елементи цих матриць обчислюють послідовно. Спочатку знаходять елементи матриці \( L \):
\[
l_{ij}=a_{ij}-\sum_{k=1}^{j-1} l_{ik}\cdot u_{kj}, \qquad i\ge j.
\]
Після цього обчислюють елементи матриці \( U \):
\[
u_{ij}=\frac{1}{l_{ii}}\cdot \left(a_{ij}-\sum_{k=1}^{i-1} l_{ik}\cdot u_{kj}\right), \qquad i<j.
\]
Тут важливо пам’ятати про умову \( l_{ii}\ne 0 \). Чому вона потрібна? Тому що під час обчислення елементів матриці \( U \) виконується ділення на \( l_{ii} \). Якщо цей елемент дорівнює нулю, то звичайне LU-розкладання без перестановок рядків або стовпців застосувати не можна.
Отже, у цьому методі зазвичай припускають, що потрібне LU-розкладання існує. Це стосується не лише початкової матриці \( A \), а й усіх матриць, які з’являються далі в ітераційному процесі.
Таким чином, LU-розкладання дає конкретний спосіб розділити поточну матрицю на дві трикутні матриці. Далі покажемо, як із цих двох матриць отримують нову матрицю з тими самими власними значеннями.
Ітераційний Процес: Побудова Подібних Матриць
Нехай початкова матриця дорівнює
\[
A_0=A.
\]
На першому кроці виконуємо LU-розкладання матриці \( A_0 \):
\[
A_0=L_0\cdot U_0.
\]
Після цього міняємо порядок множників і будуємо нову матрицю:
\[
A_1=U_0\cdot L_0.
\]
На перший погляд, це лише перестановка множників. Але саме вона забезпечує перехід до подібної матриці.
Справді, з рівності
\[
A_0=L_0\cdot U_0
\]
маємо
\[
U_0=L_0^{-1}\cdot A_0.
\]
Тоді
\[
A_1=U_0\cdot L_0=L_0^{-1}\cdot A_0\cdot L_0.
\]
Отже, матриця \( A_1 \) подібна до матриці \( A_0 \). Тому матриці \( A_1 \) та \( A_0 \) мають однакові власні значення.
Далі той самий процес повторюється вже для матриці \( A_1 \):
\[
A_1=L_1\cdot U_1,\qquad
A_2=U_1\cdot L_1.
\]
У загальному вигляді алгоритм записують так:
\[
A_k=L_k\cdot U_k,\qquad
A_{k+1}=U_k\cdot L_k,
\]
де \( k=0,1,2,\dots \).
Кожна наступна матриця \( A_{k+1} \) подібна до попередньої матриці \( A_k \), оскільки
\[
A_{k+1}=L_k^{-1}\cdot A_k\cdot L_k.
\]
Тому всі матриці
\[
A_0,A_1,A_2,\dots,A_k
\]
мають ті самі власні значення, що й початкова матриця \( A \).
За певних умов ця послідовність поступово наближається до трикутної матриці. На достатньо великому кроці діагональні елементи матриці \( A_k \) стають наближеннями до власних значень початкової матриці \( A \).
Тоді можна записати
\[
A_k=
\begin{pmatrix}
\lambda_1 & 0 & \dots & 0\\
a_{21}^{(k)} & \lambda_2 & \dots & 0\\
\vdots & \vdots & \ddots & \vdots\\
a_{n1}^{(k)} & a_{n2}^{(k)} & \dots & \lambda_n
\end{pmatrix}.
\]
Отже, числа
\[
\lambda_1,\lambda_2,\dots,\lambda_n
\]
є наближеними власними значеннями початкової матриці \( A \).
Критерій Зупинки Ітерацій: Коли Завершувати Обчислення
На практиці ітераційний процес не виконують нескінченно. Потрібно мати правило, яке показує, коли обчислення вже можна завершити.
Оскільки власні значення зчитують з головної діагоналі матриці \( A_k \), природно контролювати саме діагональні елементи. Якщо вони майже не змінюються на двох сусідніх кроках, то процес можна зупинити.
Наприклад, використовують умову
\[
\max_{1\le i\le n}\left|a_{ii}^{(k+1)}-a_{ii}^{(k)}\right|\le \varepsilon,
\]
де \( \varepsilon \) — задана точність.
Це означає, що всі діагональні елементи змінилися не більше ніж на \( \varepsilon \). Тому ці елементи можна вважати наближеними власними значеннями матриці \( A \).
Водночас потрібно пам’ятати, що збіжність методу залежить від властивостей матриці. Важливими є існування LU-розкладання на кожному кроці, те, наскільки власні значення відрізняються одне від одного за модулем, і чисельна стійкість обчислень.
Наприклад, якщо власні значення мають різні модулі, тобто
\[
|\lambda_1|>|\lambda_2|>\dots>|\lambda_n|,
\]
то ітераційний процес зазвичай поводиться краще. Якщо ж деякі власні значення мають однакові або дуже близькі за величиною модулі, збіжність може бути повільною або менш стійкою.
Тому метод LU-розкладання зручний для пояснення ітераційного підходу. Проте на практиці його застосування завжди потребує контролю похибки, перевірки умов збіжності та уважного ставлення до чисельної стійкості.
Власні Значення Матриці: Практика LU-Розкладання
Тепер розглянемо, як метод LU-розкладання працює на конкретних матрицях. У кожному прикладі будемо будувати послідовність подібних матриць і дивитися, як змінюються їхні діагональні елементи. Саме ці елементи поступово дають наближені власні значення початкової матриці.
Приклад 1. Знайти власні значення матриці методом LU-розкладання з точністю \( \varepsilon=0.1 \):
\[
A=
\begin{pmatrix}
4 & 1\\
2 & 3
\end{pmatrix}.
\]
Позначимо початкову матрицю:
\[
A_0=A=
\begin{pmatrix}
4 & 1\\
2 & 3
\end{pmatrix}.
\]
Виконаємо LU-розкладання:
\[
A_0=L_0\cdot U_0.
\]
Обчислюємо елементи матриць \( L_0 \) та \( U_0 \):
\[
\begin{gathered}
l_{11}^{0}=a_{11}^{(0)}=4,\\[4pt]
u_{12}^{0}=\dfrac{a_{12}^{(0)}}{l_{11}^{0}}=\dfrac{1}{4}=0.25,\\[4pt]
l_{21}^{0}=a_{21}^{(0)}=2,\\[4pt]
l_{22}^{0}=a_{22}^{(0)}-l_{21}^{0}\cdot u_{12}^{0}
=3-2\cdot 0.25=2.5.
\end{gathered}
\]
Отже,
\[
L_0=
\begin{pmatrix}
4 & 0\\
2 & 2.5
\end{pmatrix},
\qquad
U_0=
\begin{pmatrix}
1 & 0.25\\
0 & 1
\end{pmatrix}.
\]
Тепер міняємо множники місцями:
\[
A_1=U_0\cdot L_0.
\]
Підставимо знайдені матриці:
\[
A_1=
\begin{pmatrix}
1 & 0.25\\
0 & 1
\end{pmatrix}
\cdot
\begin{pmatrix}
4 & 0\\
2 & 2.5
\end{pmatrix}.
\]
Після обчислень маємо
\[
A_1=
\begin{pmatrix}
4.5 & 0.625\\
2 & 2.5
\end{pmatrix}.
\]
Перевіримо умову зупинки:
\[
\max\left(|4.5-4|,\ |2.5-3|\right)=0.5.
\]
Оскільки
\[
0.5>0.1,
\]
ітераційний процес продовжуємо.
Тепер розкладаємо матрицю
\[
A_1=
\begin{pmatrix}
4.5 & 0.625\\
2 & 2.5
\end{pmatrix}.
\]
Виконаємо LU-розкладання:
\[
A_1=L_1\cdot U_1.
\]
Обчислюємо елементи матриць \( L_1 \) та \( U_1 \):
\[
\begin{gathered}
l_{11}^{1}=a_{11}^{(1)}=4.5,\\[4pt]
u_{12}^{1}=\dfrac{a_{12}^{(1)}}{l_{11}^{1}}
=\dfrac{0.625}{4.5}=0.139,\\[4pt]
l_{21}^{1}=a_{21}^{(1)}=2,\\[4pt]
l_{22}^{1}=a_{22}^{(1)}-l_{21}^{1}\cdot u_{12}^{1}
=2.5-2\cdot 0.139=2.222.
\end{gathered}
\]
Отже,
\[
L_1=
\begin{pmatrix}
4.5 & 0\\
2 & 2.222
\end{pmatrix},
\qquad
U_1=
\begin{pmatrix}
1 & 0.139\\
0 & 1
\end{pmatrix}.
\]
Будуємо наступну матрицю:
\[
A_2=U_1\cdot L_1.
\]
Підставимо \( U_1 \) та \( L_1 \):
\[
A_2=
\begin{pmatrix}
1 & 0.139\\
0 & 1
\end{pmatrix}
\cdot
\begin{pmatrix}
4.5 & 0\\
2 & 2.222
\end{pmatrix}.
\]
Після обчислень:
\[
A_2=
\begin{pmatrix}
4.778 & 0.309\\
2 & 2.222
\end{pmatrix}.
\]
Перевіряємо зміну діагональних елементів:
\[
\max\left(|4.778-4.5|,\ |2.222-2.5|\right)=0.278.
\]
Оскільки
\[
0.278>0.1,
\]
потрібна ще одна ітерація.
Розкладаємо матрицю
\[
A_2=
\begin{pmatrix}
4.778 & 0.309\\
2 & 2.222
\end{pmatrix}.
\]
Виконаємо LU-розкладання:
\[
A_2=L_2\cdot U_2.
\]
Обчислюємо елементи матриць \( L_2 \) та \( U_2 \):
\[
\begin{gathered}
l_{11}^{2}=a_{11}^{(2)}=4.778,\\[4pt]
u_{12}^{2}=\dfrac{a_{12}^{(2)}}{l_{11}^{2}}
=\dfrac{0.309}{4.778}=0.065,\\[4pt]
l_{21}^{2}=a_{21}^{(2)}=2,\\[4pt]
l_{22}^{2}=a_{22}^{(2)}-l_{21}^{2}\cdot u_{12}^{2}
=2.222-2\cdot 0.065=2.093.
\end{gathered}
\]
Отже,
\[
L_2=
\begin{pmatrix}
4.778 & 0\\
2 & 2.093
\end{pmatrix},
\qquad
U_2=
\begin{pmatrix}
1 & 0.065\\
0 & 1
\end{pmatrix}.
\]
Будуємо
\[
A_3=U_2\cdot L_2.
\]
Підставимо знайдені матриці:
\[
A_3=
\begin{pmatrix}
1 & 0.065\\
0 & 1
\end{pmatrix}
\cdot
\begin{pmatrix}
4.778 & 0\\
2 & 2.093
\end{pmatrix}.
\]
Після обчислень:
\[
A_3=
\begin{pmatrix}
4.907 & 0.135\\
2 & 2.093
\end{pmatrix}.
\]
Перевіряємо критерій зупинки:
\[
\max\left(|4.907-4.778|,\ |2.093-2.222|\right)=0.129.
\]
Оскільки
\[
0.129>0.1,
\]
ітерації ще не зупиняємо.
Розкладаємо матрицю
\[
A_3=
\begin{pmatrix}
4.907 & 0.135\\
2 & 2.093
\end{pmatrix}.
\]
Виконаємо LU-розкладання:
\[
A_3=L_3\cdot U_3.
\]
Обчислюємо елементи матриць \( L_3 \) та \( U_3 \):
\[
\begin{gathered}
l_{11}^{3}=a_{11}^{(3)}=4.907,\\[4pt]
u_{12}^{3}=\dfrac{a_{12}^{(3)}}{l_{11}^{3}}
=\dfrac{0.135}{4.907}=0.028,\\[4pt]
l_{21}^{3}=a_{21}^{(3)}=2,\\[4pt]
l_{22}^{3}=a_{22}^{(3)}-l_{21}^{3}\cdot u_{12}^{3}
=2.093-2\cdot 0.028=2.038.
\end{gathered}
\]
Тому
\[
L_3=
\begin{pmatrix}
4.907 & 0\\
2 & 2.038
\end{pmatrix},
\qquad
U_3=
\begin{pmatrix}
1 & 0.028\\
0 & 1
\end{pmatrix}.
\]
Будуємо
\[
A_4=U_3\cdot L_3.
\]
Підставимо матриці:
\[
A_4=
\begin{pmatrix}
1 & 0.028\\
0 & 1
\end{pmatrix}
\cdot
\begin{pmatrix}
4.907 & 0\\
2 & 2.038
\end{pmatrix}.
\]
Після обчислень маємо
\[
A_4=
\begin{pmatrix}
4.962 & 0.056\\
2 & 2.038
\end{pmatrix}.
\]
Тепер
\[
\max\left(|4.962-4.907|,\ |2.038-2.093|\right)=0.055.
\]
Оскільки
\[
0.055\le 0.1,
\]
умова зупинки виконується.
Отже, шукані власні значення:
\[
\lambda_1=4.962,
\qquad
\lambda_2=2.038.
\]
Приклад 2. Знайти власні значення матриці методом LU-розкладання з точністю \( \varepsilon=0.1 \):
\[
A=
\begin{pmatrix}
6 & 1 & 0\\
1 & 4 & 1\\
0 & 1 & 2
\end{pmatrix}.
\]
Позначимо
\[
A_0=A=
\begin{pmatrix}
6 & 1 & 0\\
1 & 4 & 1\\
0 & 1 & 2
\end{pmatrix}.
\]
Виконаємо розкладання
\[
A_0=L_0\cdot U_0.
\]
Обчислюємо елементи першого стовпця та першого рядка:
\[
\begin{gathered}
l_{11}^{0}=a_{11}^{(0)}=6,\\[4pt]
u_{12}^{0}=\dfrac{a_{12}^{(0)}}{l_{11}^{0}}
=\dfrac{1}{6}=0.167,\\[4pt]
u_{13}^{0}=\dfrac{a_{13}^{(0)}}{l_{11}^{0}}
=\dfrac{0}{6}=0,\\[4pt]
l_{21}^{0}=a_{21}^{(0)}=1,\qquad
l_{31}^{0}=a_{31}^{(0)}=0.
\end{gathered}
\]
Далі знаходимо елементи другого стовпця та другого рядка:
\[
\begin{gathered}
l_{22}^{0}=a_{22}^{(0)}-l_{21}^{0}\cdot u_{12}^{0}
=4-1\cdot 0.167=3.833,\\[4pt]
u_{23}^{0}=\dfrac{a_{23}^{(0)}-l_{21}^{0}\cdot u_{13}^{0}}{l_{22}^{0}}
=\dfrac{1-1\cdot 0}{3.833}=0.261,\\[4pt]
l_{32}^{0}=a_{32}^{(0)}-l_{31}^{0}\cdot u_{12}^{0}
=1-0\cdot 0.167=1.
\end{gathered}
\]
Останній діагональний елемент матриці \( L_0 \):
\[
l_{33}^{0}=a_{33}^{(0)}-l_{31}^{0}\cdot u_{13}^{0}-l_{32}^{0}\cdot u_{23}^{0}
=2-0\cdot 0-1\cdot 0.261=1.739.
\]
Отже,
\[
L_0=
\begin{pmatrix}
6 & 0 & 0\\
1 & 3.833 & 0\\
0 & 1 & 1.739
\end{pmatrix},
\qquad
U_0=
\begin{pmatrix}
1 & 0.167 & 0\\
0 & 1 & 0.261\\
0 & 0 & 1
\end{pmatrix}.
\]
Будуємо
\[
A_1=U_0\cdot L_0.
\]
Підставимо знайдені матриці:
\[
A_1=
\begin{pmatrix}
1 & 0.167 & 0\\
0 & 1 & 0.261\\
0 & 0 & 1
\end{pmatrix}
\cdot
\begin{pmatrix}
6 & 0 & 0\\
1 & 3.833 & 0\\
0 & 1 & 1.739
\end{pmatrix}.
\]
Після обчислень:
\[
A_1=
\begin{pmatrix}
6.167 & 0.639 & 0\\
1 & 4.094 & 0.454\\
0 & 1 & 1.739
\end{pmatrix}.
\]
Перевіряємо умову зупинки:
\[
\max\left(|6.167-6|,\ |4.094-4|,\ |1.739-2|\right)=0.261.
\]
Оскільки
\[
0.261>0.1,
\]
продовжуємо обчислення.
Тепер розкладаємо матрицю
\[
A_1=
\begin{pmatrix}
6.167 & 0.639 & 0\\
1 & 4.094 & 0.454\\
0 & 1 & 1.739
\end{pmatrix}.
\]
Виконаємо розкладання
\[
A_1=L_1\cdot U_1.
\]
Обчислюємо елементи першого стовпця та першого рядка:
\[
\begin{gathered}
l_{11}^{1}=a_{11}^{(1)}=6.167,\\[4pt]
u_{12}^{1}=\dfrac{a_{12}^{(1)}}{l_{11}^{1}}
=\dfrac{0.639}{6.167}=0.104,\\[4pt]
u_{13}^{1}=\dfrac{a_{13}^{(1)}}{l_{11}^{1}}
=\dfrac{0}{6.167}=0,\\[4pt]
l_{21}^{1}=a_{21}^{(1)}=1,\qquad
l_{31}^{1}=a_{31}^{(1)}=0.
\end{gathered}
\]
Далі знаходимо елементи другого стовпця та другого рядка:
\[
\begin{gathered}
l_{22}^{1}=a_{22}^{(1)}-l_{21}^{1}\cdot u_{12}^{1}
=4.094-1\cdot 0.104=3.99,\\[4pt]
u_{23}^{1}=\dfrac{a_{23}^{(1)}-l_{21}^{1}\cdot u_{13}^{1}}{l_{22}^{1}}
=\dfrac{0.454-1\cdot 0}{3.99}=0.114,\\[4pt]
l_{32}^{1}=a_{32}^{(1)}-l_{31}^{1}\cdot u_{12}^{1}
=1-0\cdot 0.104=1.
\end{gathered}
\]
Останній діагональний елемент матриці \( L_1 \):
\[
l_{33}^{1}=a_{33}^{(1)}-l_{31}^{1}\cdot u_{13}^{1}-l_{32}^{1}\cdot u_{23}^{1}
=1.739-0\cdot 0-1\cdot 0.114=1.625.
\]
Отже,
\[
L_1=
\begin{pmatrix}
6.167 & 0 & 0\\
1 & 3.99 & 0\\
0 & 1 & 1.625
\end{pmatrix},
\qquad
U_1=
\begin{pmatrix}
1 & 0.104 & 0\\
0 & 1 & 0.114\\
0 & 0 & 1
\end{pmatrix}.
\]
Будуємо
\[
A_2=U_1\cdot L_1.
\]
Підставимо \( U_1 \) та \( L_1 \):
\[
A_2=
\begin{pmatrix}
1 & 0.104 & 0\\
0 & 1 & 0.114\\
0 & 0 & 1
\end{pmatrix}
\cdot
\begin{pmatrix}
6.167 & 0 & 0\\
1 & 3.99 & 0\\
0 & 1 & 1.625
\end{pmatrix}.
\]
Після обчислень:
\[
A_2=
\begin{pmatrix}
6.27 & 0.413 & 0\\
1 & 4.104 & 0.185\\
0 & 1 & 1.625
\end{pmatrix}.
\]
Перевіряємо критерій:
\[
\max\left(|6.27-6.167|,\ |4.104-4.094|,\ |1.625-1.739|\right)=0.114.
\]
Оскільки
\[
0.114>0.1,
\]
потрібна ще одна ітерація.
Розкладаємо матрицю
\[
A_2=
\begin{pmatrix}
6.27 & 0.413 & 0\\
1 & 4.104 & 0.185\\
0 & 1 & 1.625
\end{pmatrix}.
\]
Виконаємо розкладання
\[
A_2=L_2\cdot U_2.
\]
Обчислюємо елементи першого стовпця та першого рядка:
\[
\begin{gathered}
l_{11}^{2}=a_{11}^{(2)}=6.27,\\[4pt]
u_{12}^{2}=\dfrac{a_{12}^{(2)}}{l_{11}^{2}}
=\dfrac{0.413}{6.270}=0.066,\\[4pt]
u_{13}^{2}=\dfrac{a_{13}^{(2)}}{l_{11}^{2}}
=\dfrac{0}{6.27}=0,\\[4pt]
l_{21}^{2}=a_{21}^{(2)}=1,\qquad
l_{31}^{2}=a_{31}^{(2)}=0.
\end{gathered}
\]
Далі знаходимо елементи другого стовпця та другого рядка:
\[
\begin{gathered}
l_{22}^{2}=a_{22}^{(2)}-l_{21}^{2}\cdot u_{12}^{2}
=4.104-1\cdot 0.066=4.038,\\[4pt]
u_{23}^{2}=\dfrac{a_{23}^{(2)}-l_{21}^{2}\cdot u_{13}^{2}}{l_{22}^{2}}
=\dfrac{0.185-1\cdot 0}{4.038}=0.046,\\[4pt]
l_{32}^{2}=a_{32}^{(2)}-l_{31}^{2}\cdot u_{12}^{2}
=1-0\cdot 0.066=1.
\end{gathered}
\]
Останній діагональний елемент матриці \( L_2 \):
\[
l_{33}^{2}=a_{33}^{(2)}-l_{31}^{2}\cdot u_{13}^{2}-l_{32}^{2}\cdot u_{23}^{2}
=1.625-0\cdot 0-1\cdot 0.046=1.58.
\]
Отже,
\[
L_2=
\begin{pmatrix}
6.270 & 0 & 0\\
1 & 4.038 & 0\\
0 & 1 & 1.58
\end{pmatrix},
\qquad
U_2=
\begin{pmatrix}
1 & 0.066 & 0\\
0 & 1 & 0.046\\
0 & 0 & 1
\end{pmatrix}.
\]
Будуємо
\[
A_3=U_2\cdot L_2.
\]
Підставимо матриці:
\[
A_3=
\begin{pmatrix}
1 & 0.066 & 0\\
0 & 1 & 0.046\\
0 & 0 & 1
\end{pmatrix}
\cdot
\begin{pmatrix}
6.27 & 0 & 0\\
1 & 4.038 & 0\\
0 & 1 & 1.58
\end{pmatrix}.
\]
Після обчислень:
\[
A_3=
\begin{pmatrix}
6.336 & 0.266 & 0\\
1 & 4.084 & 0.072\\
0 & 1 & 1.58
\end{pmatrix}.
\]
Перевіряємо умову зупинки:
\[
\max\left(|6.336-6.27|,\ |4.084-4.104|,\ |1.58-1.625|\right)=0.066.
\]
Оскільки
\[
0.066\le 0.1,
\]
ітераційний процес зупиняємо.
Отже, шукані власні значення:
\[
\lambda_1=6.336,
\qquad
\lambda_2=4.084,
\qquad
\lambda_3=1.58.
\]
Приклад 3. Знайти власні значення матриці методом LU-розкладання з точністю \( \varepsilon=0.1 \):
\[
A=
\begin{pmatrix}
7 & 1 & 0 & 0\\
1 & 5 & 1 & 0\\
0 & 1 & 3 & 1\\
0 & 0 & 1 & 1
\end{pmatrix}.
\]
Позначимо
\[
A_0=A=
\begin{pmatrix}
7 & 1 & 0 & 0\\
1 & 5 & 1 & 0\\
0 & 1 & 3 & 1\\
0 & 0 & 1 & 1
\end{pmatrix}.
\]
Виконуємо розкладання
\[
A_0=L_0\cdot U_0.
\]
Обчислюємо перший стовпець і перший рядок:
\[
\begin{gathered}
l_{11}^{0}=a_{11}^{(0)}=7,\\[4pt]
u_{12}^{0}=\dfrac{a_{12}^{(0)}}{l_{11}^{0}}
=\dfrac{1}{7}=0.143,\\[4pt]
u_{13}^{0}=\dfrac{a_{13}^{(0)}}{l_{11}^{0}}
=\dfrac{0}{7}=0,\\[4pt]
u_{14}^{0}=\dfrac{a_{14}^{(0)}}{l_{11}^{0}}
=\dfrac{0}{7}=0,\\[4pt]
l_{21}^{0}=a_{21}^{(0)}=1,\qquad
l_{31}^{0}=a_{31}^{(0)}=0,\qquad
l_{41}^{0}=a_{41}^{(0)}=0.
\end{gathered}
\]
Далі знаходимо елементи другого стовпця та другого рядка:
\[
\begin{gathered}
l_{22}^{0}=a_{22}^{(0)}-l_{21}^{0}\cdot u_{12}^{0}
=5-1\cdot 0.143=4.857,\\[4pt]
u_{23}^{0}=\dfrac{a_{23}^{(0)}-l_{21}^{0}\cdot u_{13}^{0}}{l_{22}^{0}}
=\dfrac{1-1\cdot 0}{4.857}=0.206,\\[4pt]
u_{24}^{0}=\dfrac{a_{24}^{(0)}-l_{21}^{0}\cdot u_{14}^{0}}{l_{22}^{0}}
=\dfrac{0-1\cdot 0}{4.857}=0,\\[4pt]
l_{32}^{0}=a_{32}^{(0)}-l_{31}^{0}\cdot u_{12}^{0}
=1-0\cdot 0.143=1,\\[4pt]
l_{42}^{0}=a_{42}^{(0)}-l_{41}^{0}\cdot u_{12}^{0}
=0-0\cdot 0.143=0.
\end{gathered}
\]
Тепер обчислюємо елементи третього стовпця та третього рядка:
\[
\begin{gathered}
l_{33}^{0}=a_{33}^{(0)}-l_{31}^{0}\cdot u_{13}^{0}-l_{32}^{0}\cdot u_{23}^{0}
=3-0\cdot 0-1\cdot 0.206=2.794,\\[4pt]
u_{34}^{0}=\dfrac{a_{34}^{(0)}-l_{31}^{0}\cdot u_{14}^{0}-l_{32}^{0}\cdot u_{24}^{0}}{l_{33}^{0}}
=\dfrac{1-0\cdot 0-1\cdot 0}{2.794}=0.358,\\[4pt]
l_{43}^{0}=a_{43}^{(0)}-l_{41}^{0}\cdot u_{13}^{0}-l_{42}^{0}\cdot u_{23}^{0}
=1-0\cdot 0-0\cdot 0.206=1.
\end{gathered}
\]
Останній діагональний елемент матриці \( L_0 \):
\[
l_{44}^{0}=a_{44}^{(0)}-l_{41}^{0}\cdot u_{14}^{0}-l_{42}^{0}\cdot u_{24}^{0}-l_{43}^{0}\cdot u_{34}^{0}
=1-0\cdot 0-0\cdot 0-1\cdot 0.358=0.642.
\]
Отже,
\[
L_0=
\begin{pmatrix}
7 & 0 & 0 & 0\\
1 & 4.857 & 0 & 0\\
0 & 1 & 2.794 & 0\\
0 & 0 & 1 & 0.642
\end{pmatrix},
\qquad
U_0=
\begin{pmatrix}
1 & 0.143 & 0 & 0\\
0 & 1 & 0.206 & 0\\
0 & 0 & 1 & 0.358\\
0 & 0 & 0 & 1
\end{pmatrix}.
\]
Будуємо
\[
A_1=U_0\cdot L_0.
\]
Підставимо знайдені матриці:
\[
A_1=
\begin{pmatrix}
1 & 0.143 & 0 & 0\\
0 & 1 & 0.206 & 0\\
0 & 0 & 1 & 0.358\\
0 & 0 & 0 & 1
\end{pmatrix}
\cdot
\begin{pmatrix}
7 & 0 & 0 & 0\\
1 & 4.857 & 0 & 0\\
0 & 1 & 2.794 & 0\\
0 & 0 & 1 & 0.642
\end{pmatrix}.
\]
Після обчислень маємо
\[
A_1=
\begin{pmatrix}
7.143 & 0.694 & 0 & 0\\
1 & 5.063 & 0.575 & 0\\
0 & 1 & 3.152 & 0.23\\
0 & 0 & 1 & 0.642
\end{pmatrix}.
\]
Перевіряємо умову зупинки:
\[
\max\left(|7.143-7|,\ |5.063-5|,\ |3.152-3|,\ |0.642-1|\right)=0.358.
\]
Оскільки
\[
0.358>0.1,
\]
потрібна ще одна ітерація.
Розкладаємо матрицю
\[
A_1=
\begin{pmatrix}
7.143 & 0.694 & 0 & 0\\
1 & 5.063 & 0.575 & 0\\
0 & 1 & 3.152 & 0.23\\
0 & 0 & 1 & 0.642
\end{pmatrix}.
\]
Виконуємо розкладання
\[
A_1=L_1\cdot U_1.
\]
Обчислюємо перший стовпець і перший рядок:
\[
\begin{gathered}
l_{11}^{1}=a_{11}^{(1)}=7.143,\\[4pt]
u_{12}^{1}=\dfrac{a_{12}^{(1)}}{l_{11}^{1}}
=\dfrac{0.694}{7.143}=0.097,\\[4pt]
u_{13}^{1}=\dfrac{a_{13}^{(1)}}{l_{11}^{1}}
=\dfrac{0}{7.143}=0,\\[4pt]
u_{14}^{1}=\dfrac{a_{14}^{(1)}}{l_{11}^{1}}
=\dfrac{0}{7.143}=0,\\[4pt]
l_{21}^{1}=a_{21}^{(1)}=1,\qquad
l_{31}^{1}=a_{31}^{(1)}=0,\qquad
l_{41}^{1}=a_{41}^{(1)}=0.
\end{gathered}
\]
Далі знаходимо елементи другого стовпця та другого рядка:
\[
\begin{gathered}
l_{22}^{1}=a_{22}^{(1)}-l_{21}^{1}\cdot u_{12}^{1}
=5.063-1\cdot 0.097=4.966,\\[4pt]
u_{23}^{1}=\dfrac{a_{23}^{(1)}-l_{21}^{1}\cdot u_{13}^{1}}{l_{22}^{1}}
=\dfrac{0.575-1\cdot 0}{4.966}=0.116,\\[4pt]
u_{24}^{1}=\dfrac{a_{24}^{(1)}-l_{21}^{1}\cdot u_{14}^{1}}{l_{22}^{1}}
=\dfrac{0-1\cdot 0}{4.966}=0,\\[4pt]
l_{32}^{1}=a_{32}^{(1)}-l_{31}^{1}\cdot u_{12}^{1}
=1-0\cdot 0.097=1,\\[4pt]
l_{42}^{1}=a_{42}^{(1)}-l_{41}^{1}\cdot u_{12}^{1}
=0-0\cdot 0.097=0.
\end{gathered}
\]
Тепер обчислюємо елементи третього стовпця та третього рядка:
\[
\begin{gathered}
l_{33}^{1}=a_{33}^{(1)}-l_{31}^{1}\cdot u_{13}^{1}-l_{32}^{1}\cdot u_{23}^{1}
=3.152-0\cdot 0-1\cdot 0.116=3.036,\\[4pt]
u_{34}^{1}=\dfrac{a_{34}^{(1)}-l_{31}^{1}\cdot u_{14}^{1}-l_{32}^{1}\cdot u_{24}^{1}}{l_{33}^{1}}
=\dfrac{0.23-0\cdot 0-1\cdot 0}{3.036}=0.076,\\[4pt]
l_{43}^{1}=a_{43}^{(1)}-l_{41}^{1}\cdot u_{13}^{1}-l_{42}^{1}\cdot u_{23}^{1}
=1-0\cdot 0-0\cdot 0.116=1.
\end{gathered}
\]
Останній діагональний елемент матриці \( L_1 \):
\[
l_{44}^{1}=a_{44}^{(1)}-l_{41}^{1}\cdot u_{14}^{1}-l_{42}^{1}\cdot u_{24}^{1}-l_{43}^{1}\cdot u_{34}^{1}
=0.642-0\cdot 0-0\cdot 0-1\cdot 0.076=0.566.
\]
Отже,
\[
L_1=
\begin{pmatrix}
7.143 & 0 & 0 & 0\\
1 & 4.966 & 0 & 0\\
0 & 1 & 3.036 & 0\\
0 & 0 & 1 & 0.566
\end{pmatrix},
\qquad
U_1=
\begin{pmatrix}
1 & 0.097 & 0 & 0\\
0 & 1 & 0.116 & 0\\
0 & 0 & 1 & 0.076\\
0 & 0 & 0 & 1
\end{pmatrix}.
\]
Будуємо
\[
A_2=U_1\cdot L_1.
\]
Підставимо \( U_1 \) та \( L_1 \):
\[
A_2=
\begin{pmatrix}
1 & 0.097 & 0 & 0\\
0 & 1 & 0.116 & 0\\
0 & 0 & 1 & 0.076\\
0 & 0 & 0 & 1
\end{pmatrix}
\cdot
\begin{pmatrix}
7.143 & 0 & 0 & 0\\
1 & 4.966 & 0 & 0\\
0 & 1 & 3.036 & 0\\
0 & 0 & 1 & 0.566
\end{pmatrix}.
\]
Після обчислень маємо
\[
A_2=
\begin{pmatrix}
7.24 & 0.482 & 0 & 0\\
1 & 5.082 & 0.352 & 0\\
0 & 1 & 3.112 & 0.043\\
0 & 0 & 1 & 0.566
\end{pmatrix}.
\]
Перевіримо критерій зупинки:
\[
\max\left(|7.24-7.143|,\ |5.082-5.063|,\ |3.112-3.152|,\ |0.566-0.642|\right)=0.097.
\]
Оскільки
\[
0.097\le 0.1,
\]
ітераційний процес зупиняємо.
Отже, шукані власні значення:
\[
\lambda_1=7.24,
\qquad
\lambda_2=5.082,
\qquad
\lambda_3=3.112,
\qquad
\lambda_4=0.566.
\]
Що Вивчати Далі: Інші Чисельні Методи
Після LU-розкладання варто подивитися на інші чисельні підходи. Вони розв’язують схожі задачі, але працюють по-іншому. Так легше побачити, який метод зручний у різних ситуаціях.
- Метод обертання: Як поступово спрощують матрицю — У статті йтиметься про знаходження власних значень симетричної матриці за допомогою послідовних обертань і переходу до діагонального вигляду.
- Степеневий метод: Як знайти найбільше власне значення — У статті буде показано, як степеневий метод допомагає наближено знайти найбільше за модулем власне значення матриці.
- Метод вичерпування: Як знайти наступне власне значення — У статті йтиметься про випадок, коли одне власне значення вже відоме, а наступне знаходять за допомогою додаткового перетворення матриці.
Власні Значення Матриці: Алгоритм Для Програмної Реалізації
Якщо вам подобається програмування, цей метод можна легко перетворити на невеликий навчальний проєкт. Блок-схема нижче показує логіку алгоритму, який виконує ітераційний процес на основі LU-розкладання для матриці \( 2\times 2 \), контролює точність обчислень і виводить наближені власні значення матриці. Спробуйте реалізувати цей алгоритм у Pascal, Python, C++, JavaScript або іншій мові, з якою вам зручно працювати. Так ви не лише краще зрозумієте розглянутий підхід, а й побачите, як математична ідея поступово перетворюється на робочий програмний код.
