Як наблизити номер умови великої матриці?


9

Як я наближаю номер умови великої матриці G, якщо G є комбінацією перетворень Фур'є F (неоднорідні чи рівномірні), кінцеві відмінності R, і діагональні матриці S?

Матриці дуже великі і не зберігаються в пам'яті і доступні лише як функції.

Зокрема, у мене є така матриця:

Gμ=SHFHFS+μRHR

Я хочу дослідити зв’язок між μ і номер умови k(Gμ).

Я припускаю, що потрібен якийсь ітеративний підхід? Оптимально буде якийсь код MATLAB.


1
Як щодо спроби визначити число умови та використовувати нерівність трикутника та субмультиплікативність? Я думаю, ви повинні мати можливість сказати щось про норми / умови кожної з матриць. Таким чином ви отримуєте оцінку кількості умовиGμ.
Анке

Відповіді:


11

MATLAB має пару "точних" функцій для цього, condі rcond, при цьому останні повертають зворотний номер умови. Наближена функція Matlab condestбільш докладно описана нижче.

Часто оцінки кількості умови генеруються як побічні продукти рішення лінійної системи для матриці, тому ви, можливо, зможете підсилити оцінку кількості умов для інших робіт, які вам так чи інакше потрібно виконати. Дивіться тут короткий опис того, як обчислюються оцінки. Також зауваження документації Sandia Labs AztecOO (див. Розділ 3.1), що необов'язкові оцінки кількості умов доступні за допомогою ітеративних розв'язувачів (використовуючи сформовану тридіагональну матрицю Ланцоса з кон'югатними градієнтами або генеровану матрицю Гессенбурга з ретартованими GMRES).

Оскільки ваші матриці є "дуже великими" та "доступними лише як функції", логічним підходом буде метод, який дає відповідні копії на розв'язаному градієнті або варіанті.

Нещодавній документ arXiv.org Нестаціонарні екстремальні наближення власних значень в ітеративних рішеннях лінійних систем та оцінювачів відносної похибки пропонує такий підхід і містить кілька цитат до попередньої літератури.

Тепер, коли я дивлюся, на цьому форумі є ряд тісно пов’язаних попередніх питань (не всі з відповідями, але перевірити коментарі):

Оцініть крайні власні значення за допомогою CG

Оцінка чисел умов для дуже великих матриць

Найшвидший алгоритм для обчислення номера умови великої матриці в Matlab / Octave


Оскільки наявність коду MATLAB була частиною питання, ось деяка інформація про condestвбудовану функцію, яка оцінює число умови 1 нормиA1A11. Ідея - від Хагера (1984), з написанням на 2010 рік та розширеннями , щоб чітко обчислити (знайти максимальну 1-норму стовпця) та оцінити градієнтним методом. Дивіться також Джон Burkardt в УМОВИ , бібліотеку MATLAB (інші мови доступні) «для обчислення або оцінки числа обумовленості матриці.»A1A11

Оскільки ваша матриця, мабуть, є ермітською і позитивно визначеною, можливо, номер умови 2 норми викликає більший інтерес. Задача полягає в оцінці співвідношення найбільших до найменших (абсолютних) власних значень. Проблема дещо паралельна випадку з 1 нормою, оскільки загалом хороша оцінка найбільшого власного значення може бути легко отримана, але оцінка найменшого власного значення виявляється складніше.

Незважаючи на те, що націлені на випадки, що не стосуються SPD (і навіть не квадратні), ця остання стаття arXiv.org, Надійна оцінка ітеративного стану-кількості , дає хороший огляд найменшої проблеми оцінки власного значення та багатообіцяючої лінії атаки Крилова-підпростору метод (LSQR), який становить кон'югат градієнтів у випадку SPD.


Спасибі за вашу відповідь. Як я можу отримати номер умови як побічний твір спряженого градієнта?
Штіфель

@Stiefel: Існує документ 1992 року про приблизне обчислення крайніх власних значень та кількості умов неоднорідних матриць Лея Гуан-яо. Дозвольте мені побачити, чи можу я знайти кращу довідку (не за стіною оплати).
хардмат

@Stiefel: Додано кілька посилань. Можливо, вас також зацікавить перевірка книг Google (або бібліотеки) на методи ітеративного рішення Owe Axelsson (1996), esp. Гл. 13 Швидкість конвергенції методу кон'югатного градієнта , хоча акцент робиться на отриманні кращих оцінок кількості ітерацій, необхідних для зближення, ніж передбачено лише числом умови.
хардмат

1
@Stiefel Ім'я, як ваше, ви повинні навчати нас про метод CG :) Дивіться en.wikipedia.org/wiki/Eduard_Stiefel
stali
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.