我很难掌握如何计算 FLOP。前一刻我觉得我明白了,下一刻我觉得毫无意义。一些帮助解释这一点将不胜感激。我查看了有关该主题的所有其他帖子,但没有一个完全用我熟悉的编程语言解释(我知道一些 MATLAB 和 FORTRAN)。
这是我的一本书中的一个示例,说明了我正在尝试做的事情。
对于下面的一段代码,触发器的总数可以写成(n*(n-1)/2)+(n*(n+1)/2)
相当于n^2 + O(n)
.
[m,n]=size(A)
nb=n+1;
Aug=[A b];
x=zeros(n,1);
x(n)=Aug(n,nb)/Aug(n,n);
for i=n-1:-1:1
x(i) = (Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i);
end
我正在尝试应用上述相同的原理来查找 FLOP 的总数作为n
以下代码(MATLAB)中方程数量的函数。
% e = subdiagonal vector
% f = diagonal vector
% g = superdiagonal vector
% r = right hand side vector
% x = solution vector
n=length(f);
% forward elimination
for k = 2:n
factor = e(k)/f(k‐1);
f(k) = f(k) – factor*g(k‐1);
r(k) = r(k) – factor*r(k‐1);
end
% back substitution
x(n) = r(n)/f(n);
for k = n‐1:‐1:1
x(k) = (r(k)‐g(k)*x(k+1))/f(k);
end