什么是浮点运算以及如何计算它们(在MATLAB中)?

时间:2016-03-04 11:50:50

标签: matlab floating-point polynomials

我有一个赋值,我基本上需要在一个简单的程序中计算浮点运算的数量,它涉及一个循环,一个矩阵,以及*,+和^等操作。

根据我的理解,浮点运算是一个涉及浮点数的运算,我们可能有兴趣计算这些运算,因为我认为它们可能对计算机来说更贵。如果你想为这个部分添加更多细节,那就太好了。

我的问题是我不知道究竟哪些操作涉及浮点数,除非我使用isfloat等函数。在这种情况下,只需将操作中的一个数字作为浮点运算被视为浮点运算,对吗?如果没有,为什么?你能在这个上添加更多细节吗?

例如,假设我有以下简单的功能:

function [r, n] = naive(c, x)
% c is the vector of coefficients of the polynomial
% The coeffiecients should be given as follows
% c(1) = coefficient of x^0 (or 1).
% c(length(c)) = coefficient of the largest power of x
% x is the point to evaluate the polynomial at
% r is the result of the evaluation
% (Assumes that the entries are integers)

r = c(1);
n = 0;

for i=2:length(c)
    r = r + c(i) * x^(i - 1);
    n = n + 2 + (i - 1);
end

end

它基本上计算了在x评估的正常多项式给定向量c中的系数。

从代码中可以看出,n实际上是跟踪浮点运算。但实际上,我将每个数学运算(除了赋值)都算作浮点运算,但这当然可能不对,或者是这样吗?如果是或否,为什么?

系数和c都可能是浮点数。因此,如果数字是浮点数,那么我们应该首先检查isfloat,而不是将每个操作都计为浮点运算,而只是增加n

注意,我已经意识到函数flops,根据我的理解,它应该计算浮点运算,但是它已被弃用了,而且我想要更好地学习这些概念,因此尝试手动计算它们。

感谢您的帮助!

0 个答案:

没有答案