Если матрица A задана в явной форме, т.е. набором своих элементов, то её 1-норма может быть вычислена по определению - как максимум суммы модулей элементов, расположенных в одном столбце. Однако, в ряде случаев требуется оценить норму матрицы, заданной в неявной форме, когда нам недоступна сама матрица, но доступна операция умножения матрицы на вектор.
Такая задача может возникнуть при нахождении нормы матрицы, заданной LU-разложением A = LU. Формирование матрицы A требует O(N 3) операций, в то время, как умножение на неё вектора - только O(N 2). Другой ситуацией, в которой может возникнуть такая задача, является оценка нормы матрицы, обратной к матрице A - для формирования матрицы A -1 в явной форме также требуется O(N 3) операций, но для умножения на неё (т.е. для решения системы линейных уравнений Ay = x) только O(N 2) операций, если нам известно LU-разложение матрицы A.
Принцип работы итерационного алгоритма
Общая идея итерационного алгоритма, приведенного здесь, проста - надо взять произвольный стартовый вектор x0 , и осуществлять серию умножений этого вектора на матрицу A:
|
|
x1 = Ax0
x2 = Ax1
x3 = Ax2
...
Если Ax0 ≠ 0, то приведенный алгоритм позволит после некоторого числа итераций оценить снизу норму матрицы A, как отношение норм xi+1 и xi . Хотя реализованный здесь алгоритм несколько сложнее, в его основе лежит та же простая идея.