Алгоритм обчислення власних значень
Однією з найважливіших задач обчислювальної математики є створення ефективних і стійких алгоритмів знаходження власних значень матриці. Ці алгоритми обчислення власних значень можуть також знаходити власні вектори.
Власні значення і власні вектори
Якщо задано Шаблон:Math квадратну матрицю Шаблон:Math над дійсними або комплексними числами, власне значення Шаблон:Math і відповідний йому кореневий вектор Шаблон:Math - це пара, що задовольняє рівності[1]
де Шаблон:Math ненульовий Шаблон:Math вектор-стовпець, Шаблон:Math — Шаблон:Math одинична матриця, Шаблон:Math — додатне ціле, а Шаблон:Math і Шаблон:Math можуть бути комплексними, навіть якщо Шаблон:Math дійсне. Якщо Шаблон:Math, вектор просто називається власним вектором. У цьому випадку Шаблон:Math. Будь-яке власне значення Шаблон:Math матриці Шаблон:Math має простий[прим. 1] власний вектор, відповідний йому так, що якщо Шаблон:Math — найменше ціле, за якого Шаблон:Math для кореневого вектора Шаблон:Math, то Шаблон:Math буде простим власним вектором. Значення Шаблон:Math завжди можна взяти меншим або рівним Шаблон:Math. Зокрема, Шаблон:Math для всіх кореневих векторів Шаблон:Math відповідних Шаблон:Math
Для будь-якого власного значення Шаблон:Math матриці Шаблон:Math ядро Шаблон:Math складається з усіх власних векторів, відповідних Шаблон:Math, (разом з 0) і називається власним підпростором числа Шаблон:Math, а векторний підпростір Шаблон:Math складається з усіх кореневих векторів (доповнений нульовим вектором) і називається кореневим підпростором. Геометрична кратність значення Шаблон:Math є розмірністю його власного підпростору. Алгебрична кратність значення Шаблон:Math є розмірністю його кореневого підпростору. Подальші терміни пов'язані з рівністю
Тут Шаблон:Math — визначник, Шаблон:Math — всі різні власні значення матриці Шаблон:Math, а Шаблон:Math — відповідні алгебричні кратності. Функція Шаблон:Math — це характеристичний многочлен матриці Шаблон:Math. Отже, алгебрична кратність є кратністю власних значень як коренів характеристичного многочлена. Оскільки будь-який власний вектор є кореневим вектором, геометрична кратність менша або дорівнює алгебричній кратності. Сума алгебричних кратностей дорівнює Шаблон:Math степеню характеристичного многочлена. Рівняння Шаблон:Math називають характеристичним рівнянням, оскільки його корені є точно власними значеннями матриці Шаблон:Math. В теоремі Гамільтона — Келі сама матриця Шаблон:Math задовольняє тому самому рівнянню: Шаблон:Math[прим. 2]. Як наслідок, стовпці матриці мають бути або 0, або кореневими векторами, відповідними власному значенню Шаблон:Math, оскільки вони знищуються матрицею
Будь-який набір кореневих векторів різних власних значень лінійно незалежний, так що базис для всього Шаблон:Math можна вибрати з набору кореневих векторів. Точніше цей базис Шаблон:Math можна вибрати і вибудувати так, що
- якщо Шаблон:Math і Шаблон:Math мають одне і те саме власне значення, то це виконуватиметься для будь-якого Шаблон:Math при Шаблон:Math між Шаблон:Math і Шаблон:Math;
- якщо Шаблон:Math не є простим власним вектором і якщо Шаблон:Math — його власне значення, то Шаблон:Math (зокрема Шаблон:Math має бути простим власним вектором).
Якщо ці базисні вектори розташувати як стовпці матриці Шаблон:Math, то Шаблон:Math можна використовувати для перетворення матриці Шаблон:Math в її нормальну жорданову форму:
де Шаблон:Math — власне значення, Шаблон:Math якщо Шаблон:Math і Шаблон:Math в інших випадках.
Якщо Шаблон:Math є оборотною матрицею і Шаблон:Math — власне значення матриці Шаблон:Math з відповідним кореневим вектором Шаблон:Math, то Шаблон:Math. Отже, Шаблон:Math є власним значенням матриці Шаблон:Math з відповідним кореневим вектором Шаблон:Math. Таким чином, подібні матриці мають однакові власні значення.
Нормальні, ермітові і дійсні симетричні матриці
Ермітово-спряжена матриця Шаблон:Math до комплексної матриці Шаблон:Math — це траспонована матриця із заміною всіх елементів спряженими значеннями: Шаблон:Math. Квадратну матрицю Шаблон:Math називають нормальною, якщо вона комутує з ермітово-спряженою: Шаблон:Math. Матрицю називають ермітовою, якщо вона дорівнює своїй спряженій: Шаблон:Math. Всі ермітові матриці нормальні. Якщо Шаблон:Math має тільки дійсні елементи, то спряжена до неї — це просто транспонована матриця і вона буде ермітовою в тому і тільки в тому випадку, коли вона симетрична. Якщо застосувати це до стовпців, спряженість можна використовувати для визначення канонічного скалярного добутку в Шаблон:Math: Шаблон:Math[прим. 3]. Нормальні, ермітові і дійсні симетричні матриці мають низку корисних властивостей:
- Кожен кореневий власний вектор нормальної матриці є простим власним вектором.
- Будь-яка нормальна матриця подібна до діагональної, оскільки її нормальна жорданова форма є діагональною матрицею.
- Власні вектори, відповідні різним власним значенням нормальної матриці, ортогональні.
- Для будь-якої нормальної матриці Шаблон:Math Шаблон:Math має ортонормальний базис, що складається з власних векторів матриці Шаблон:Math. Відповідна матриця власних векторів є унітарною.
- Власні значення ермітової матриці є дійвсними числами, оскільки Шаблон:Math для ненульового власного вектора Шаблон:Math.
- Якщо матриця Шаблон:Math дійсна, існує ортонормальний базис для Шаблон:Math, що складається з власних векторів матриці Шаблон:Math, в тому і тільки в тому випадку, коли Шаблон:Math симетрична.
Як дійсні, так і комплексні матриці, які не є при цьому ермітовими матрицями, можуть мати всі власні значення дійсними. Наприклад, дійсна трикутна матриця має всі свої власні значення на діагоналі, але, в загальному випадку, не симетрична.
Число обумовленості
Будь-яку задачу обчислювальної математики можна розглядати як обчислення деякої функції Шаблон:Math від деякого аргументу Шаблон:Math. Число обумовленості Шаблон:Math задачі — це відношення відносної похибки результату обчислення до відносної похибки параметра функції і залежить як від функції, так і від параметра. Число обумовленості описує, наскільки зростає похибка під час обчислень. Десятковий логарифм цього числа говорить про кількість знаків, які ми втрачаємо відносно вихідних даних. Число обумовленості стосується найкращого сценарію, відбиваючи нестабільність самої задачі, незалежно від способу розв'язування. Ніякий алгоритм не може дати результату кращого, ніж визначений числом обумовленості, хіба що випадково. Однак погано розроблений алгоритм може дати істотно гірші результати. Наприклад, як буде згадано нижче, задача знаходження власних значень нормальної матриці завжди добре обумовлена, проте задача знаходження коренів многочлена може бути Шаблон:Не перекладено. Такі алгоритми обчислення власних значень, які працюють шляхом знаходження коренів характеристичного многочлена, можуть виявитися погано обумовленими, навіть якщо сама задача добре обумовлена.
Для задачі розв'язування системи лінійних рівнянь Шаблон:Math, де Шаблон:Math є оборотною, число обумовленості Шаблон:Math визначається виразом Шаблон:Math, де Шаблон:Nobr — операторна норма, підпорядкована звичайній евклідовій нормі на Шаблон:Math. Оскільки це число не залежить від Шаблон:Math і є тим самим як для Шаблон:Math, так і для Шаблон:Math, його зазвичай називають числом обумовленості Шаблон:Math матриці Шаблон:Math. Це значення Шаблон:Math є також абсолютним значенням відношення найбільшого власного значення матриці Шаблон:Math до її найменшого власного значення. Якщо Шаблон:Math є унітарною, то Шаблон:Math, так що Шаблон:Math. У загальному випадку для матриць часто складно обчислити операторну норму. З цієї причини для оцінення числа обумовленості зазвичай використовують інші норми матриці.
Для задачі обчислення власних значень Шаблон:Не перекладено, що якщо Шаблон:Math є власним значенням діагоналізовної Шаблон:Math матриці Шаблон:Math з матрицею власних векторів Шаблон:Math, то абсолютна похибка обчислення Шаблон:Math обмежена добутом Шаблон:Math і абсолютною похибкою в Шаблон:Math: [2]. Як наслідок, число обумовленості для обчислення Шаблон:Math дорівнює Шаблон:Math. Якщо матриця Шаблон:Math нормальна, то Шаблон:Math є унітарною і Шаблон:Math. Таким чином, задача обчислення власних значень нормальних матриць добре обумовлена.
Показано, що число обумовленості задачі обчислення власного підпростору нормальної матриці Шаблон:Math, відповідного власного значення Шаблон:Math, обернено пропорційне мінімальній відстані між Шаблон:Math та іншими, відмінними від Шаблон:Math, власними значеннями матриці Шаблон:Math[3]. Зокрема, задача визначення власного підпростору для нормальних матриць добре обумовлена для ізольованих власних значень. Якщо власні значення не ізольовані, найкраще, на що можна розраховувати, це визначення підпростору всіх власних векторів довколишніх власних значень.
Алгоритми
Будь-який нормований многочлен є характеристичним многочленом супутньої матриці, тому алгоритм для обчислення власних значень можна використовувати для знаходження коренів многочленів. Теорема Абеля — Руффіні показує, що будь-який такий алгоритм для розмірності більшої від 4 має або бути нескінченним, або залучати функції складніші, ніж елементарні арифметичні операції або дробові степені. З цієї причини алгоритми, які обчислюють точно власні значення за скінченне число кроків, існують тільки для спеціальних класів матриць. У загальному випадку алгоритми є ітеративними і дають на кожній ітерації чергове наближення до розв'язку.
Деякі алгоритми дають усі власні значення, інші дають кілька значень або навіть всього одне, однак і ці алгоритми можна використовувати для обчислення всіх власних значень. Як тільки власне значення Шаблон:Math матриці Шаблон:Math визначено, його можна використовувати або для зведення алгоритму до отримання іншого власного значення, або для зведення задачі до такої, для якої Шаблон:Math не є розв'язком.
Зведення зазвичай виконують зсувом: Шаблон:Math замінюється на Шаблон:Math для деякої константи Шаблон:Math. Щоб отримати власне значення матриці Шаблон:Math, потрібно власне значення, знайдене для Шаблон:Math, додати до Шаблон:Math. Наприклад, у степеневому методі Шаблон:Math. Ітерація степеневого методу знаходить найбільше за абсолютною величиною значення, так що навіть якщо Шаблон:Math є наближенням до власного значення, ітерація степеневого методу навряд чи знайде його вдруге. І навпаки, методи, засновані на зворотних ітераціях знаходять найменше власне значення, так що Шаблон:Math вибирається подалі від Шаблон:Math в надії опинитися ближче до якогось іншого власного значення.
Зведення можна виконати звуженням матриці Шаблон:Math до простору стовпців матриці Шаблон:Math. Оскільки Шаблон:Math вироджена, простір стовпців має меншу розмірність. Алгоритм обчислення власних значень можна тоді застосувати до цієї звуженої матриці. Процес можна продовжувати, поки не буде знайдено всі власні значення.
Якщо алгоритм знаходження власних значень не дає власного вектора, поширеним є застосування алгоритму, заснованого на зворотній ітерації, з прирівнюванням Шаблон:Math до найближчої апроксимації власного значення. Це швидко приводить до власного вектора найближчого до Шаблон:Math власного значення. Для невеликих матриць альтернативою є використання стовпцевого підпростору добутку Шаблон:Math для кожного з решти власних значень Шаблон:Math
Матриці Гессенберга і тридіагональні матриці
Оскільки власними значеннями трикутної матриці є діагональні елементи, в загальному випадку не існує скінченного методу, подібного до виключень Гауса, для зведення матриці до трикутної форми, зберігаючи при цьому власні значення, однак можна отримати щось близьке до трикутної матриці. Верхня матриця Гессенберга — це квадратна матриця, в якій усі елементи нижче від першої піддіагоналі дорівнюють нулю. Нижня матриця Гессенберга — це квадратна матриця, в якій усі члени вище від першої наддіагоналі дорівнюють нулю. Матриці, які є як нижніми, так і верхніми матрицями Гессенберга — це тридіагональні матриці. Матриці Гессенберга і тридіагональні матриці є початковими для багатьох алгоритмів обчислення власних значень, оскільки нульові значення зменшують складність задачі. Існує кілька методів зведення матриць до матриць Гессенберга з тими ж власними значеннями. Якщо початкова матриця симетрична або ермітова, то кінцева матриця буде тридіагональною.
Якщо потрібні тільки власні значення, не потрібно обчислювати матрицю подібності, оскільки перетворена матриця має ті самі власні значення. Якщо також потрібні і власні вектори, матриця подібності необхідна для перетворення власних векторів матриці Гессенберга на власні вектори початкової матриці.
| Метод | Застосовний до матриць | Результат | Ціна без матриці подібності | Ціна з матрицею подібності | Опис |
|---|---|---|---|---|---|
| Перетворення Хаусхолдера | загального вигляду | матриця Гессенберга | Шаблон:Math[4] | Шаблон:Math[4] | Відбиття кожного стовпця відносно підпростору для обнулення нижніх елементів стовпця |
| Повороти Ґівенса | загального вигляду | матриця Гессенберга | Шаблон:Math[4] | Здійснюється плоске обертання для обнулення окремих елементів. Обертання впорядковані так, що наступні обертання не зачіпають нульових елементів | |
| Ітерації Арнольді | загального вигляду | матриця Гессенберга | Здійснюється ортогоналізація Грама — Шмідта на підпросторах Крилова | ||
| Шаблон:Не перекладено[5] | ермітова | тридіагональна матриця | Ітерації Арнольді для ермітових матриць |
Ітеративні алгоритми
Ітеративні алгоритми розв'язують задачу обчислення власних значень побудовою послідовностей, що збігаються до власних значень. Деякі алгоритми дають також послідовності векторів, що збігаються до власних векторів. Найчастіше послідовності власних значень виражаються через послідовності подібних матриць, які збігаються до трикутної або діагональної форми, що дозволяє потім просто отримати власні значення. Послідовності власних векторів виражаються через відповідні матриці подібності.
| Метод | Застосовний до матриць | Результат | Ціна за один крок | Збіжність | Опис |
|---|---|---|---|---|---|
| Степеневий метод | загального вигляду | найбільше власне значення і відповідний вектор | Шаблон:Math | лінійна | Багаторазове множення матриці на довільно вибраний початковий вектор з подальшою нормалізацією |
| Зворотний степеневий метод | загального вигляду | найближче до μ власне значення і відповідний вектор | лінійна | Степенева ітерація з матрицею Шаблон:Math | |
| Метод ітерацій Релея | загального вигляду | найближче до μ власне значення і відповідний вектор | кубічна | Степенева ітерація з матрицею Шаблон:Math де Шаблон:Math — відношення Релея від попередньої ітерації | |
| Передобумовлена зворотна ітерація[6] або Шаблон:Не перекладено | додатноозначена дійсна симетрична | найближче до μ власне значення і відповідний вектор | Зворотна ітерація з передобумовленням (наближене звернення матриці Шаблон:Math) | ||
| Метод поділу навпіл[7] | дійсна симетрична тридіагональна | будь-яке власне значення | лінійна | Використовує метод бісекції для пошуку коренів характеристичного многочлена і властивості послідовності Штурма | |
| Ітерації Лагерра | дійсна симетрична тридіагональна | будь-яке власне значення | кубічна[8] | Використовує Шаблон:Не перекладено обчислення коренів характеристичного многочлена і властивості послідовності Штурма | |
| QR-алгоритм[9] | Гессенберга | всі власні значення | Шаблон:Math | кубічна | Розкладання A = QR, де Q ортогональна, R — трикутна, потім використовується ітерація до RQ |
| всі власні значення | Шаблон:Math | ||||
| Метод Якобі | дійсна симетрична | всі власні значення | Шаблон:Math | квадратична | Використовує поворот Ґівенса у спробі позбутися від недіагональних елементів. Спроба не вдається, але підсилює діагональ |
| Шаблон:Не перекладено | ермітова тридіагональна | всі власні значення | Шаблон:Math | Матриця розбивається на підматриці, які діагоналізуються, потім возз'єднуються | |
| всі власні значення | Шаблон:Math | ||||
| Метод гомотопії | дійсна симетрична тридіагональна | всі власні значення | Шаблон:Math | Будується обчислювана гомотопія | |
| Шаблон:Не перекладено | дійсна симетрична | найближче до μ власне значення і відповідний власний вектор | Передобумовлена зворотна ітерація, застосована до Шаблон:Math | ||
| Алгоритм MRRR[10] | дійсна симетрична тридіагональна | деякі або всі власні значення і відповідні власні вектори | Шаблон:Math | «Multiple Relatively Robust Representations» — здійснюється зворотна ітерація з розкладанням LDLT зміщеної матриці. |
Пряме обчислення
Не існує простих алгоритмів прямого обчислення власних значень для матриць у загальному випадку, але для багатьох спеціальних класів матриць власні значення можна обчислити прямо. Це:
Трикутні матриці
Оскільки визначник трикутної матриці є добутком її діагональних елементів, то для трикутної матриці T . Отже, власні значення T — це її діагональні елементи.
Розкладані поліноміальні рівняння
Якщо Шаблон:Math — будь-який многочлен і Шаблон:Math то власні значення матриці Шаблон:Math задовольняють тому ж рівнянню. Якщо вдається розкласти многочлен Шаблон:Math на множники, то власні значення Шаблон:Math містяться серед його коренів.
Наприклад, проєктор — це квадратна матриця Шаблон:Math, що задовольняє рівнянню Шаблон:Math. Коренями відповідного скалярного поліноміального рівняння Шаблон:Math будуть 0 і 1. Таким чином, проєктор має 0 і 1 власними значеннями. Кратність власного значення 0 — це дефект Шаблон:Math, тоді як кратність 1 — це ранг Шаблон:Math.
Інший приклад — матриця Шаблон:Math, що задовольняє рівнянню Шаблон:Math для деякого скаляра Шаблон:Math. Власні значення мають бути рівними Шаблон:Math. Оператори проєктування
задовольняють рівностям
і
Простори стовпців матриць Шаблон:Math і Шаблон:Math є підпросторами власних векторів матриці Шаблон:Math, які відповідають Шаблон:Math і Шаблон:Math, відповідно.
Матриці 2×2
Для розмірностей від 2 до 4 існують формули з використанням радикалів, які можна використовувати для обчислення власних значень. Для матриць 2х2 і 3х3 це звичайна практика, але для матриць 4х4 через зростання складності Шаблон:Не перекладено цей підхід менш привабливий.
Для матриць 2×2
характеристичний многочлен дорівнює
Власні значення можна знайти як корені квадратного рівняння:
Якщо визначити як відстань між двома власними значеннями, легко обчислити
з подібними формулами для Шаблон:Math і Шаблон:Math. Звідси випливає, що обчислення добре обумовлене, якщо власні значення ізольовані.
Власні вектори можна отримати, використовуючи теорему Гамільтона — Келі. Якщо Шаблон:Math — власні значення, то Шаблон:Math, так що стовпці Шаблон:Math обнуляються матрицею Шаблон:Math і навпаки. Припускаючи, що жодна з матриць не дорівнює нулю, стовпці кожної матриці мають містити власні вектори для іншого власного значення (якщо ж матриця нульова, то Шаблон:Math є добутком одиничної матриці на константу і будь-який ненульовий вектор є власним).
Наприклад, нехай
тоді Шаблон:Math і Шаблон:Math, так що характеристичне рівняння
а власні значення рівні 3 і -2. Тепер
- ,
В обох матрицях стовпці відрізняються скалярними коефіцієнтами, так що можна вибирати будь-який стовпець. Так, Шаблон:Math можна використовувати як власний вектор, відповідного власному значенню -2, а Шаблон:Math — як власний вектор для власного значення 3, що легко можна перевірити множенням на матрицю Шаблон:Math.
Матриці 3 х 3
Якщо Шаблон:Math — матриця 3 х 3, то характеристичним рівнянням буде:
Це рівняння можна розв'язати за допомогою методів Кардано або Лагранжа, але афінне перетворення матриці Шаблон:Math істотно спрощує вираз і веде прямо до тригонометричного розв'язку. Якщо Шаблон:Math, то Шаблон:Math і Шаблон:Math мають однакові власні вектори і Шаблон:Math є власним значенням матриці Шаблон:Math тоді й лише тоді, коли Шаблон:Math є власним значенням матриці Шаблон:Math. Якщо покласти і , одержимо
Підстановка Шаблон:Math і деяке спрощення з використанням тотожності Шаблон:Math зводить рівняння до Шаблон:Math. Отже,
Якщо Шаблон:Math є комплексним числом або більше 2 за абсолютною величиною, арккосинус для всіх трьох величин Шаблон:Math слід брати з однієї гілки. Проблема не виникає, якщо Шаблон:Math дійсна і симетрична, приводячи до простого алгоритму:[11]
% Given a real symmetric 3x3 matrix A, compute the eigenvalues
p1 = A(1,2)^2 + A(1,3)^2 + A(2,3)^2
if (p1 == 0)
% A is diagonal.
eig1 = A(1,1)
eig2 = A(2,2)
eig3 = A(3,3)
else
q = trace(A)/3
p2 = (A(1,1) - q)^2 + (A(2,2) - q)^2 + (A(3,3) - q)^2 + 2 * p1
p = sqrt(p2 / 6)
B = (1 / p) * (A - q * E) % E is the identity matrix
r = det(B) / 2
% In exact arithmetic for a symmetric matrix -1 <= r <= 1
% but computation error can leave it slightly outside this range.
if (r <= -1)
phi = pi / 3
elseif (r >= 1)
phi = 0
else
phi = acos(r) / 3
end
% the eigenvalues satisfy eig3 <= eig2 <= eig1
eig1 = q + 2 * p * cos(phi)
eig3 = q + 2 * p * cos(phi + (2*pi/3))
eig2 = 3 * q - eig1 - eig3 % since trace(A) = eig1 + eig2 + eig3
end
Власні вектори також Шаблон:Math можна отримати, скориставшись теоремою Гамільтона — Келі. Якщо Шаблон:Math — різні власні значення матриці Шаблон:Math, то Шаблон:Math. Тоді стовпці добутку будь-яких двох з цих матриць містять власні вектори третього власного значення. Однак якщо Шаблон:Math, то Шаблон:Math і Шаблон:Math. Таким чином, кореневий власний підпростір Шаблон:Math натягнуий на стовпці Шаблон:Math, тоді як звичайний власний підпростір натягнутий на стовпці Шаблон:Math. Звичайний власний підпростір Шаблон:Math натягнутий на стовпці Шаблон:Math.
Наприклад, нехай
Характеристичне рівняння буде
з власними значеннями 1 (кратності 2) і −1. Обчислюємо
- ,
а потім
- .
Тоді Шаблон:Math є власним вектором для −1, а Шаблон:Math є власним вектором для 1. Вектори Шаблон:Math і Шаблон:Math є кореневими векторами, відповідними значенню 1, будь-який з яких можна скомбінувати з Шаблон:Math і Шаблон:Math, утворюючи базис кореневих векторів матриці Шаблон:Math.
Див. також
Коментарі
Примітки
Література
Додаткова література
- ↑ Шаблон:Стаття
- ↑ Шаблон:Стаття
- ↑ Шаблон:Стаття
- ↑ 4,0 4,1 4,2 Шаблон:Книга
- ↑ Шаблон:Книга
- ↑ Шаблон:Стаття
- ↑ Шаблон:Harvnb, стр. 274, Метод деления пополам
- ↑ Шаблон:Стаття
- ↑ Шаблон:Harvnb, стр. 156, глава 8, Алгоритмы QR и QL
- ↑ Шаблон:Стаття
- ↑ Шаблон:Стаття
Помилка цитування: Теги <ref> існують для групи під назвою «прим.», але не знайдено відповідного тегу <references group="прим."/>