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


9

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

Відповіді:


7

Обчислення числа умови (навіть наближення її до коефіцієнта 2), схоже, має таку ж складність, як і обчислення факторизації, хоча теорем у цьому напрямку немає.

Від розрідженого Чолеського чинника R симетричної позитивної визначеної матриці або з розрідженої QR факторизація (з неявною Q) загальної квадратної матриці можна отримати число умови у нормі Фробеніуса, обчисливши розріджене обернене підмножину (RTR)1, що набагато швидше, ніж обчислення повної оберненої. (З цим пов’язана моя стаття: Гібридні норми та межі для певних лінійних систем, лінійна алгебра, додаток 216 (1995), 257-266. Http://www.mat.univie.ac.at/~neum/scan/74 .pdf )

Редагувати: Якщо A=QR то по відношенню до будь-якої інваріантної норни,

cонг(А)=cонг(R)=cонг(RТR).
Для обчислення розріджених QR-факторів див., Наприклад,
http://dl.acm.org/citation.cfm?id=174408 .
Для обчислення розрідженої оберненої дивіться, наприклад, мій документ: Оцінка максимальної вірогідності коваріацій у розріджених лінійних моделях, Genetics Selection Evolution 30 (1998), 1-24.
https://www.mat.univie.ac.at/~neum/ms/reml.pdf Вартість приблизно в 3 рази перевищує вартість факторизації.

Тож ви пропонуєте наступне: Дано матрицю A обчислити його QR форми A=QR де R - верхня трикутна матриця і Q є ортогональною матрицею і тоді число умови задається через cond(A)=||A||||A1||(RTR)1 Суть у тому, як знайти швидкий метод для обчислення QR-факторизації. Чи правий я?
linello

@linello: не зовсім; дивись мою редакцію.
Арнольд Ноймаєр

Дякую! Я збираюся це перевірити, btw, яка вартість цього кроку?
linello

@linello: для повної матриці, О(н3); для розрідженої матриці багато що залежить від структури розрідженості.
Арнольд Ноймаєр

4

Звичайно, легко використати розклад власного значення / власного вектора симетричної матриці або SVD загальної матриці для обчислення номера умови, але це не особливо швидкі способи продовження.

Існують ітеративні алгоритми, які можуть обчислити оцінку кількості умови, яка корисна для більшості цілей, не переходячи на всю роботу з обчислень A1. Дивіться, наприклад, condestфункцію в MATLAB.


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

1

Для розріджених ермітових матриць Н, ви можете використовувати алгоритм Lanczos для обчислення його власних значень. ЯкщоН не є ермітцем, ви можете обчислити його особливі значення, обчисливши власні значення НТН.

Оскільки найбільші та найменші власні значення / сингулярні значення можна знайти дуже швидко (задовго до завершення тридіагоналізації), метод Ланцоса особливо корисний для обчислення кількості умови.


Мені завжди було цікаво, де знайти читабельний код matlab для ітерації lanczos, який пояснює, як отримати найменше або найбільше власне значення. Ви можете мені запропонувати один?
linello

У мене немає кодів MATLAB для алгоритму Lanczos.
чаохуанг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.