我正在运行一个简单的脚本来估计函数的根。一切都很顺利,算法的每次迭代都会打印出当前的x和f(x)。但是当脚本完成并将最终的x估计值作为函数的输出时,该值会被返回并四舍五入到小数点后三位。
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)
。 - Amro