Мне трудно понять, почему этот код Matlab для выполнения исключения Гаусса без поворота с использованием факторизации LU занимает (2/3) * n^3
флопс. (FLOPs: операции с плавающей запятой и not FLOPS: операции с плавающей запятой в секунду)
function x = GaussianElimination(A,b)
n = length(b);
for k = 1:n-1
for i = k+1:n
mult = A(i,k)/A(k,k);
A(i,k+1:n) = A(i,k+1:n)-mult*A(k,k+1:n);
b(i) = b(i) - mult*b(k);
end
end
x = zeros(n,1);
x(n) = b(n)/A(n,n);
for k = n-1:-1:1
x(k) = (b(k) - A(k,k+1:n)*x(k+1:n))/A(k,k);
end
end
Если бы кто-нибудь мог объяснить мне, как подсчитываются флопы для тех вложенных циклов, которые начинаются с k+1
, я был бы признателен.
PS: я не говорю здесь об алгоритмической сложности.
(2/3) * n^3
флоп для компьютера или человека, но я бы предположил, что это для человека? - person hazer_drum   schedule 13.10.2013