【发布时间】:2013-03-27 22:30:36
【问题描述】:
我很难掌握如何计算 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
我正在尝试应用上述相同的原理来在以下代码 (MATLAB) 中找到 FLOP 总数作为方程数 n 的函数。
% 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
【问题讨论】:
-
不,不是。我需要了解如何根据方程式“n”的数量来确定触发器的总数。我不想要代码或其他东西来为我确定它。
-
首先,您没有在问题中提供该信息。其次,你的第一个循环有问题:迭代变量应该是
k,而不是x。你运行了这段代码吗? -
是的,发布时出错。我解决了我的问题。无需全力防守。
-
您的问题非常模糊,您正在寻找的答案似乎不清楚。您是在问如何计算 FLOPs?您是否在寻找作为 n 函数的解析表达式?图形可视化就足够了吗?
标签: matlab floating-point counting flops