Нуль-пространство прямоугольной плотной матрицы


16

Для заданной плотной матрицы каков наилучший способ найти его нулевое пространство в пределах некоторого допуска ?

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

Исходя из этого, могу ли я сказать, что некоторые столбцы линейно зависят от ? Другими словами, после вычисления нулевого пространственного базиса, какие столбцы должны быть удалены, чтобы получить неособую матрицу?ϵA

Рекомендации приветствуются.

Ответы:


12

Стандартные методы для определения нулевого пространства матрицы должны использовать QR-разложение или SVD. Если точность имеет первостепенное значение, SVD является предпочтительным; QR-разложение происходит быстрее.

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

Используя QR-разложение, если AT=QR , и ранг A равен r , то последние nr столбцы Q составляют пустое пространство A , предполагая, что QR-разложение является раскрытием ранга. Чтобы определить r , рассчитайте количество элементов на главной диагонали R , величина которых превышает допуск (аналогично тому, который используется в подходе SVD).

Не используйте разложение LU. В точной арифметике это жизнеспособный подход, но с арифметикой с плавающей запятой накопление числовых ошибок делает его неточным.

Википедия охватывает эти темы здесь .


Джефф, говоря в терминах QR, предположим, что у меня есть декомпозиция, как мне тогда связать базис пустого пространства и столбцы в исходной матрице? Другими словами, какие столбцы я должен удалить из , чтобы избавиться от пустого пространства? Дело здесь в том, чтобы работать с самим , а не с его разложением. AA
Александр

Подпрограммы, которые вычисляют декомпозицию QR, обычно включают опцию для возврата вектора перестановки, указывающего, как переставляются столбцы для получения факторизации QR. Последние записей этого вектора перестановки будут соответствовать строкам (столбцы ), которые находятся в нулевом пространстве. Первые записей этого вектора соответствуют столбцам которые являются линейно независимыми. Я не уверен, что вы подразумеваете под "избавиться от пустого пространства". Вы имеете в виду, что хотите удалить столбцы из чтобы получить неособую матрицу? nrAATrATA
Джефф Оксберри

Да, я имею в виду это. Я посмотрю на перестановку, спасибо.
Александр

Это другой вопрос. Что вы бы тогда сделать вместо этого вычислить QR - разложение (или СВД) из . Если вы вычислите QR-разложение , вы можете вычислить ранг как в ответе выше (нет необходимости транспонировать матрицу), а затем первые записей (где - ранг ) вектора перестановки соответствуют для независимых столбцов . Такой же алгоритм применяется к SVD; если вы можете вернуть вектор перестановки вместе с разложением, это должно предоставить необходимую информацию. AAArrAA
Джефф Оксберри

8

Если , как показывает ваш вопрос, вы можете сохранить некоторую работу, сначала выбрав набор индексов из (скажем) случайных строк и используя ортогональную факторизацию . (QR-факторизация - это та, где - это квадрат, а - прямоугольник с рангом , а оставшиеся столбцы в равны нулю. Использование перестановочной QR-факторизации повысит стабильность; перестановка должна быть затем учтена более подробно. рецепт приготовления.)mnIp5nAI:T=QRQRrnrR

Как правило, это даст вам гораздо ниже мерное подпространство , натянутое на столбцы , последние столбцов . Это подпространство содержит нулевое пространство . Теперь выбрать другой, непересекающийся случайный набор индексов и вычислить QR разложение . Умножьте полученное нулевое пространство слева на чтобы получить улучшенное возможно, даже меньшего размера. Итерируйте, пока размерность больше не уменьшится. Тогда вы , вероятно, правильное пространство нуля и можете проверить путем вычисления A N . Если это еще не незначительно, выполните дальнейшие итерации с наиболее значимыми строками.n - r Q A ( A I : N ) T N N 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.