Самый быстрый алгоритм для вычисления числа условий большой матрицы в Matlab / Octave

9

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

linello
источник

Ответы:

7

Вычисление числа условия (даже аппроксимирующего его с коэффициентом 2), похоже, имеет ту же сложность, что и вычисление факторизации, хотя в этом направлении нет теорем.

Из разреженного фактора Холецкого симметричной положительно определенной матрицы или из разреженной факторизации (с неявным ) общей квадратной матрицы можно получить число условий в норме Фробениуса, вычисляя разреженное обратное подмножество , что намного быстрее, чем вычисление полного обратного. (С этим связана моя статья: Гибридные нормы и границы для переопределенных линейных систем, Линейная алгебра, приложение 216 (1995), 257-266. Http://www.mat.univie.ac.at/~neum/scan/74 .pdf )RQRQ(RTR)1

Изменить: Если то по отношению к любой унитарно инвариантной норне,Для вычисления разреженных факторизаций 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

cond(A)=cond(R)=cond(RTR).



Арнольд Ноймайер
источник
Итак, вы предлагаете следующее: Учитывая матрицу вычислите ее QR вида где - верхняя треугольная матрица, а является ортогональной матрицей, а затем номер условия задается как Суть в том, как найти быстрый метод для вычисления факторизации QR. Я прав? AA=QRRQcond(A)=||A||||A1||(RTR)1
linello
@linello: не совсем; см. мое редактирование
Арнольд Ноймайер
Спасибо! Я собираюсь проверить это, кстати, какова стоимость этого шага?
linello
@linello: для полной матрицы ; для разреженной матрицы это сильно зависит от структуры разреженности. O(n3)
Арнольд Ноймайер
4

Конечно, легко использовать разложение по собственному значению / собственному вектору симметричной матрицы или SVD общей матрицы для вычисления числа условия, но это не особенно быстрые способы продолжения.

Существуют итерационные алгоритмы, которые могут вычислить оценку числа условия, которая полезна для большинства целей, не занимаясь всей работой по вычислению . Смотрите, например, функцию в MATLAB. A1condest

Брайан Борхерс
источник
Но оценка иногда значительно слишком мала. Вычисление числа условия (даже аппроксимирующего его с коэффициентом 2), похоже, имеет ту же сложность, что и вычисление факторизации, хотя в этом направлении нет теорем.
Арнольд Ноймайер
1

Для разреженных эрмитовых матриц вы можете использовать алгоритм Ланцоша для вычисления его собственных значений. Если не эрмитово, вы можете вычислить его особые значения, вычислив собственные значения .HHHTH

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

chaohuang
источник
Мне всегда было интересно, где найти читаемый код matlab для итерации Ланцоша, который объясняет, как получить наименьшее или наибольшее собственное значение. Можете ли вы предложить мне один?
linello
У меня нет кодов MATLAB для алгоритма Ланцоша.
Chaohuang