我很难理解为什么这个 Matlab 代码在不使用 LU 分解进行旋转的情况下执行高斯消除会(2/3) * n^3
失败。(FLOPs:浮点运算而不是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:我不是在这里谈论算法复杂性。