我想用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
答案 0 :(得分:1)
要在函数中使用vpa,您必须输入vpa MyFunc(vpa(4))
或在函数内使用vpa。您问题的代码与:
x=MyFunc()
vpa(x,4)
调用第一个MyFunc
,然后将结果转换为vpa。
我建议在调试器中运行您的代码并检查每个数字的数据类型。仅当此类型为vpa时,才使用vpa。