【问题标题】:Prevent Matlab from rounding output?防止Matlab舍入输出?
【发布时间】:2011-12-13 07:57:15
【问题描述】:

我正在运行一个简单的脚本来估计函数的根。一切都很好,算法的每次迭代都会打印出当前的 x 和 f(x),但是当脚本完成并将 x 的最终估计设置为函数的输出时,该值被返回并四舍五入到小数点后 3 位。 .

while k < maxit
    k = k + 1;
    dx = b - a;
    xm = a + 0.5*dx;       %  Minimize roundoff in computing the midpoint

    fm = feval(fun, xm, diameter, roughness, reynolds);

    fprintf('%4d  %12.20e  %12.4e\n',k,xm,fm); 

    if (abs(fm)/fref < feps) | (abs(dx)/xref < xeps) % True when root is found
        r = xm;  
    return;
end

这是输出的尾部位:

k       xm            fm
45  6.77444446476613980000e-003   1.3891e-012
46  6.77444446478035060000e-003  -1.3380e-011
47  6.77444446477324520000e-003  -5.9952e-012
48  6.77444446476969250000e-003  -2.3022e-012
49  6.77444446476791610000e-003  -4.5830e-013

    ans =

        0.0068

我不知道为什么它会四舍五入输出......我该如何防止这种情况发生?

【问题讨论】:

  • 只需像在函数中一样打印返回值:x = myRootsFunction(...); fprintf('%12.20e\n',x)

标签: matlab rounding number-formatting newtons-method


【解决方案1】:

在运行脚本之前尝试在命令行中输入“format longE”

【讨论】:

  • 或者把它放在脚本的顶部。它只是改变了值在命令窗口中的显示方式——我相信如果你在后续计算中使用“ans”,它会使用它的全精度
【解决方案2】:

我也有这个问题。看看这个页面。它使您可以更好地控制输出的样式。

http://www.mathworks.co.uk/help/techdoc/ref/format.html

【讨论】:

    猜你喜欢
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 2010-10-16
    • 2016-12-18
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多