Matlab与Excel的计算差异

时间:2014-09-25 10:05:10

标签: excel matlab excel-vba vba

我在使用Matlab时遇到了一些问题。我正在做一些关于OTC工具(定价,构建折扣曲线等)的计算,首先在Excel中,然后在Matlab中进行(用于比较)。虽然我100%确定Excel中的计算是好的(与市场数据相比),但似乎Matlab产生了一些差异(即-4,18-05E)。 Matlab算法看起来很好。我想知道 - 也许是因为Matlab正在进行一些计算 - 我听到了一些关于它的信息。我正在尝试通过函数 vpa()将双数转换为浮点数,但它看起来不能使用双数。还有其他想法吗?

2 个答案:

答案 0 :(得分:4)

Excel使用符合IEEE 754浮点规范的64位双精度浮点数。

Excel处理=1/5等结果的方式来准确计算它们(尽管这个例子不是一个二元理性)完全取决于格式化 。它类似地处理=1/3 + 1/3 + 1/3。如果你考虑一下它真的很聪明:Excel的实现者没有真正的选择,因为普通的Excel用户不是 au fait 具有更好的浮点运算点,而且只是鄙视一个电子表格包,它甚至无法使1/5正确#34;

所有人都说,如果两个系统之间的差异为-4,18-05E,那你就非常不走运了。这是因为双浮点精确到大约15个有效数字。如果您一直使用双精度浮点类型,那么您的算法实现得非常差,因为错误项会冒泡到那个数量级。

最有可能(我也在金融界工作),区别在于您对折扣曲线的内插方式。如果我是你,我会首先看看。

答案 1 :(得分:1)

鉴于错误的值与默认的format设置相比,这几乎可以肯定是因为使用默认的format short并将命令行的输出与实际值进行比较。

x = 5.4444418

输出:

  

x =

5.4444

然后:

x-5.4444

输出:

  

ans =

     

4.1800e-05

x中存储的值保持为5.4444418,它只是命令行的度量输出发生变化。