MATLAB:四位舍入算法

时间:2016-01-23 18:16:40

标签: matlab

我在尝试让MATLAB使用四位舍入算法进行计算时遇到了麻烦。

(不幸的是,由于我是Stackoverflow的新手,我无法发布图片,因此我需要将外部链接到我最初在此问题中设置的内容:http://i.imgur.com/XMkSE6p.png

然而在MATLAB中,当我尝试使用函数vpa时,我收到了答案-0.01611。

这是我正在运行的MATLAB脚本:

A = 1;
B = 62.10;
C = 1;

vpa((-B+sqrt(B^2-4*A*C))/(2*A),4)

返回

ans =

-0.01611

我想要的时候

ans =

-0.02

我是否错误地使用了函数vpa?有没有更好的方法在我的MATLAB脚本中制定二次方程来实现这一目标?对此的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

为了达到图片的效果,你必须在那里完成所做的事情,在每次操作后进行回合,最后不要进行一次。除非您需要vpa的扩展精度,否则我建议您改为使用双打,而是使用roundsd

%just demonstrating it for the first intermediate result, getting the 3852
r=@(x)roundsd(x,4)
r(B^2)-4*r(A)*r(C)

在任何地方进行舍入操作都不是很方便,为了更方便的使用,你可以实现自己的类,重载内置的操作符。

答案 1 :(得分:0)

使用round()功能:

A = 1;
B = 62.10;
C = 1;

x = vpa((-B+sqrt(B^2-4*A*C))/(2*A),4)
x =
      -0.01611
y = round(x,2)
y = 
      -0.02