Нульовий простір прямокутної щільної матриці


16

Дано щільну матрицю який найкращий спосіб знайти основу нульового простору в межах деякого допуску ?

ARm×n,m>>n;max(m)100000
ϵ

Виходячи з цієї основи, чи можу я потім сказати, що певна кількість лінійно залежить від ? Іншими словами, обчисливши нульовий простір основи, які стовпці потрібно видалити, щоб отримати несинулярну матрицю?ϵA

Довідники високо оцінені.

Відповіді:


12

Стандартними методами визначення нульового простору матриці є використання QR-розкладання або SVD. Якщо точність є першорядною, перевага віддається SVD; Розкладання QR відбувається швидше.

A=UΣVHVΣmax(m,n)εε

Використовуючи QR-розкладання, якщо , а ранг дорівнює , то останні стовпці складають нульовий простір , припускаючи, що розкладання QR є рейтинговим. Для визначення обчисліть кількість записів на головній діагоналі , величина якої перевищує допуск (подібний до використовуваного у підході SVD).A r n - r Q A r RAT=QRArnrQArR

Не використовуйте LU розкладання. У точній арифметиці - це життєздатний підхід, але при арифметиці з плаваючою комою накопичення числових помилок робить його неточним.

Вікіпедія висвітлює ці теми тут .


Джефф, говорячи з точки зору QR, припустимо, у мене є розкладання, як я потім співвідносити нульовий простір основи та стовпців у оригінальній матриці? Іншими словами, які стовпці потрібно видалити з , щоб позбутися нульового простору? Сенс тут полягає в роботі з самим А , а не з його розкладанням. AA
Олександр

Рутини, які обчислюють QR-розкладання, зазвичай містять опцію повернення перестановочного вектора, що вказує, як перестановлені стовпці для отримання QR-факторизації. Останні записів цього перестановочного вектора відповідали б рядкам A (стовпці A T ), які знаходяться в просторі нулів. Перші r записи цього вектора відповідають стовпцям A T , лінійно незалежним. Я не впевнений, що ви маєте на увазі під "позбутися нульового простору". Ви маєте на увазі, що хочете видалити стовпці з А, щоб отримати несовісну матрицю? nrAATrATA
Джефф Оксберрі

Так, я маю на увазі це. Я перегляну перестановку, дякую.
Олександр

Це вже інше питання. Що ви б тоді зробити замість цього обчислити QR - розкладання (або СВД) з . Якщо обчислити QR-декомпозицію A , ви можете обчислити ранг A, як у відповіді вище (не потрібно переносити матрицю), а потім відповідають перші записи r (де r - ранг A ) вектора перестановки для незалежних стовпців A . Такий же алгоритм застосовується до SVD; якщо ви можете повернути вектор перестановки разом з розкладанням, це повинно надати необхідну інформацію. AAArrAA
Джефф Оксберрі

8

Якщо , так як ваше запитання вказує на те , ви можете заощадити роботу першого вибору індексу набір I з р 5 п (скажімо) випадкових рядків і з допомогою ортогональної факторизации T I : = Q R . (QR-факторизація - це та, де Q є sqare, а R прямокутний з рангом r , а решта n - r стовпців R дорівнюють нулю. Використання перестановленої QR-факторизації підвищить стабільність; перестановку потрібно враховувати в більш детальний рецепт.)mnIp5nAI:T=QRQRrnrR

Як правило, це дасть вам набагато нижче мірне підпростір , натягнуте на стовпці , останньої п - г стовпців Q . Це підпростір містить нульове простір A . Тепер вибрати інший, непересічний випадковий набір індексів і обчислити QR розкладання ( A I : N ) T . Помножте отриманий нульовий простір зліва на N, щоб отримати вдосконалений N, можливо, навіть нижчого розміру. Ітерайте, поки розмірність N більше не зменшиться. Тоді ви, мабуть, маєте правильний нульовий простір і можете перевірити, обчисливши A NNnrQA(AI:N)TNNNAN. Якщо це ще не незначно, зробіть подальші ітерації з найбільш значущими рядками.

Редагувати: Після того як ви отримаєте , ви можете знайти максимальний набір J лінійно незалежних стовпців A шляхом ортогональної факторизації N T = Q R з поворотом. Дійсно, множина J індексів, не обраних як опорні, матиме це властивість.NJANT=QRJ


+1 - ефективний спосіб визначення нульового простору великої матриці. Мені доведеться пам’ятати, щоб ознайомитися з цією відповіддю пізніше, коли мені це потрібно.
Джефф Оксберрі

Дійсно, це звучить розумно, однак мої матриці вписуються в 16 ГБ оперативної пам’яті, тому я б залишився зі стандартним matlab qr.
Олександр

Професор Ноймаєр, я вирішив перевірити цей алгоритм, але я не розумію, що саме означає і що означає "обчислити QR-факторизацію ( A I : N ) T "? Поясніть, будь ласка, трохи більше. N(AI:N)T
Олександр

Я трохи відредагував свою відповідь. обчислюється за рецептом Джеффа Оксберрі. N
Арнольд Ноймаєр

Дякую. Я його реалізував. Однак, наскільки я бачу, цей алгоритм не дозволяє визначити мені безліч лінійно незалежних стовпців (так як ми розкладемо А Т I : замість А я : ), а просто допомагає оцінити сам базис нуль - простору? AAI:TAI:
Олександр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.