Prévenir Matlab de l'arrondissement de sortie?

Im de l'exécution d'un script simple pour estimer les racines d'une fonction. Tout fonctionne très bien, à chaque itération de l'algorithme imprime le courant de x et f(x), mais quand la fin du script et des jeux de l'estimation finale de x comme le résultat de la fonction la valeur est retournée et arrondi à 3 décimales...

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

ici est la queue bits de la sortie:

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

je ne sais pas pourquoi son arrondi à la sortie.... comment puis-je éviter cela?

il suffit d'imprimer la valeur retournée de la même manière que l'intérieur de la fonction: x = myRootsFunction(...); fprintf('%12.20e\n',x)

OriginalL'auteur kbirk | 2011-10-22