Наиболее интенсивная вычислительная операция здесь - это инверсия матрицы, поэтому она зависит от того, как вы реализуете эту операцию. Если мы предположим, что вы реализовали с помощью алгоритма Гаусса-Джордана, который занимает O(n^3)
, то общая сложность составляет O(maxiter * n^3)
. Здесь я принимаю во внимание, что n
больше m
(A^T*A
занимает O(m*n^2)
).
Если вы вычислите (A^T*A + a*I)^-1
и A^Tb
снаружи, то у вас останется
Inv * (Atb + a(z^k - u^k))^T
, то есть O(n^2)
, потому что вам нужно умножить матрицу nxn на вектор nx1, в то время как сложение и вычитание принимают O(n)
.
Тем не менее, у вас есть некоторые несоответствия в размерах, которые я описал в комментариях к вопросу.