使用变精度算术和函数

时间:2014-11-19 14:50:15

标签: matlab precision

我想用Matlab中的四位十进制算术来计算我的函数。但是当我运行vpa(MyFunc(), 4)时,Matlab会返回与运行MyFunc()时相同的结果,而结果实际上是不同的。现在我的问题是如何在不编辑我的功能的情况下使用vpa()

编辑在以下示例中,我的函数为sum(),您看到结果相同(vpa()仅影响最后一个结果)

>> x = exp([-10:0.01:1]);
>> sum(x)

ans =

  273.1851

>> vpa(sum(vpa(x, 4)), 4)

ans =

273.2

正如@Daniel所说,我决定用sum()编写vpa()函数,但结果仍然是一样的!有什么问题?

>> s = 0; for x = -10:0.01:1, s = vpa( vpa(s,4) + vpa(exp(x),4) , 4); end
>> s

s =

273.2

1 个答案:

答案 0 :(得分:1)

要在函数中使用vpa,您必须输入vpa MyFunc(vpa(4))或在函数内使用vpa。您问题的代码与:

相同
x=MyFunc()
vpa(x,4)

调用第一个MyFunc,然后将结果转换为vpa。

我建议在调试器中运行您的代码并检查每个数字的数据类型。仅当此类型为vpa时,才使用vpa。