Существует ли метод для решения линейных систем вида где - фиксированная SPD-матрица, а - положительные диагональные матрицы?
Например, если каждый скалярен, достаточно вычислить СВД из . Однако, это нарушается для общего из-за недостаточной коммутативности.
Обновление : ответы пока "нет". У кого-нибудь есть интересная интуиция относительно того, почему? Отсутствие ответа означает, что нет нетривиального способа сжатия информации между двумя некоммутирующими операторами. Это не удивительно, но было бы здорово понять это лучше.
linear-algebra
algorithms
performance
complexity
Джеффри Ирвинг
источник
источник
Ответы:
Ближайшие положительные ответы на ваш вопрос, которые я смог найти, - для разреженных диагональных возмущений (см. Ниже).
С учетом вышесказанного я не знаю ни одного алгоритма для общего случая, хотя есть обобщение упомянутой вами техники для скалярных сдвигов от SPD-матриц ко всем квадратным матрицам:
Для любой квадратной матрицы существует разложение Шура A = U T U H , где U унитарное, T верхняя треугольная, а A + σ I = U ( T + σ I ) U H обеспечивает разложение Шура A + σ I . Таким образом, ваша идея предварительного вычисления распространяется на все квадратные матрицы с помощью алгоритма:A A=UTUH U T A+σI=U(T+σI)UH A+σI
Эта линия рассуждений сводится к тому подходу, который вы упомянули, когда является SPD, поскольку разложение Шура сводится к EVD для нормальных матриц, и EVD совпадает с SVD для эрмитовых положительно определенных матриц.A
Ответ на обновление: Пока у меня нет доказательств, которых у меня нет, я отказываюсь утверждать, что ответ «нет». Тем не менее, я могу дать некоторое представление о том, почему это трудно, а также другой пример, где ответ - да.
Существенная трудность заключается в том, что, хотя обновление является диагональным, оно по-прежнему имеет полный ранг, поэтому основной инструмент обновления обратного, формула Шермана-Моррисона-Вудбери , похоже, не помогает. Несмотря на то, что случай скалярного сдвига также является полным рангом, это чрезвычайно особый случай, поскольку, как вы упоминали, он коммутирует с каждой матрицей.
С учетом вышесказанного , если каждый был разреженным, т. Е. Каждый из них имел O ( 1 ) ненулей, то формула Шермана-Моррисона-Вудбери дает решение O ( n 2 ) с каждой парой { D , b } . Например, с одним ненулевым значением в j- й диагональной записи, так что D = δ e j e H j :D O(1) O(n2) {D,b} j D=δejeHj
где - это j- й стандартный базисный вектор .ej j
Еще одно обновление: я должен упомянуть, что я попробовал предварительное условие которое @GeoffOxberry предложило на нескольких случайных матрицах SPD 1000 × 1000 с использованием PCG, и, возможно, неудивительно, что, по-видимому, значительно сокращается число итераций, когда | | D | | 2 / | | A | | 2 мало, но не тогда, когда оно равно O ( 1 ) или больше.A−1 1000×1000 ||D||2/||A||2 O(1)
источник
Если является по диагонали доминирующим для каждого I , то последняя работа Koutis, Miller, и Peng (см сайт Koutis' для работы на симметричных диагонали доминирующих матриц) могут быть использованы для решения каждой системы в O ( п 2(Di+A) i время (фактически O ( m log ( n ) ) время, где m - максимальное количество ненулевых записей в ( D i + A ) за всеO(n2log(n)) O(mlog(n)) m (Di+A) , так что вы могли бы также воспользоваться редкостью). Тогда общее время выполнения будет O ( n 2 log ( n ) k ) , что лучше, чемподход O ( n 3 k ) решения каждой системы наивно с использованием плотной линейной алгебры, но немного хуже, чем квадратичное время выполнения. просишь.i O(n2log(n)k) O(n3k)
Значительная разреженность в для всех i может быть использована разреженными решателями для получения алгоритма O ( n 2 k ) , но я предполагаю, что если бы вы имели значительную разреженность, то вы бы упомянули об этом.(Di+A) i O(n2k)
Вы также можете использовать в качестве предварительного условия для решения каждой системы, используя итерационные методы, и посмотреть, как это работает.A−1
Ответ на обновление : @JackPaulson подчеркивает важность линейной алгебры и алгоритмов. Вместо этого я сосредоточусь на аргументах сложности вычислений.
Вычислительная сложность решения линейных систем и вычислительная сложность умножения матриц по существу равны. (См. Теорию алгебраической сложности .) Если вы могли бы найти алгоритм, который мог бы сжимать информацию между двумя некоммутирующими операторами (игнорируя положительную полуопределенную часть) и непосредственно решать набор систем, которые вы предлагаете за квадратичное время по , то это вероятно, вы могли бы использовать такой алгоритм, чтобы сделать выводы о более быстром умножении матриц. Трудно понять, как можно использовать положительную полуопределенную структуру в плотном прямом методе для линейных систем, чтобы уменьшить ее вычислительную сложность.n
Как и @JackPaulson, я не хочу сказать, что ответ «нет» без доказательства, но, учитывая вышеприведенные связи, проблема очень сложная и представляет текущий исследовательский интерес. Лучшее, что вы могли бы сделать с асимптотической точки зрения, не используя специальную структуру, - это усовершенствование алгоритма Копперсмита и Винограда, дающее алгоритм , где α ≈ 2.375 . Этот алгоритм будет трудно кодировать, и он, вероятно, будет медленным для небольших матриц, потому что постоянный фактор, предшествующий асимптотической оценке, вероятно, огромен относительно исключения Гаусса.O(nαk) α≈2.375
источник
Разложение Тейлора первого порядка можно использовать для улучшения сходимости по сравнению с простым запаздыванием. Предположим , что мы имеем предобуславливатель (или факторы прямого решения) для , и мы хотим использовать его для предобусловливание A . Мы можем вычислитьA+D A
источник