Предположим, нам дана матрица , и пусть . Как быстро мы можем вычислить мощность этой матрицы?
Следующая лучшая вещь по сравнению с вычислением продуктов - это использование быстрой экспоненты, для которой требуются матричные продукты .
Для диагонализуемых матриц можно использовать разложение по собственным значениям. Это естественное обобщение, разложение Джордана, неустойчиво при пертурбации и поэтому не учитывается (afaik).
Можно ли ускорить возведение матрицы в общем случае?
Быстрое возведение в степень предполагает, что вариант этого вопроса тоже полезен:
Можно ли вычислить квадрат общей матрицы быстрее, чем с помощью известных алгоритмов умножения матриц?
Ответы:
Как вы заметили, вычисление может быть выполнено за O ( log m ), умноженное на количество операций для умножения матриц на N × N матриц. Ответ на ваш второй вопрос - нет, по крайней мере, для асимптотической сложности - матричный квадрат и умножение матриц имеют эквивалентную временную / арифметическую сложность (с точностью до постоянных множителей). Сокращение возведения в квадрат до умножения матриц очевидно. Чтобы уменьшить умножение на возведение в квадрат, предположим , что мы хотим вычислить произведение A и B . Форма 2 n × 2 n матрицы C с блочной структурой:Am O(logm) N×N A B 2n×2n C
То есть имеет матрицу из всех нулей n × n в своем верхнем левом квадранте и нижнем правом квадранте. Обратите внимание, что C 2 содержит A ⋅ B в своем верхнем левом квадранте.C n×n C2 A⋅B
источник