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
Vous devez vous connecter pour publier un commentaire.
essayez de taper "format de longE" dans la ligne de commande avant d'exécuter le script
OriginalL'auteur Andrew_L
J'ai eu ce problème aussi. Consultez cette page. Il vous permet de contrôler le style de vos sorties de mieux.
http://www.mathworks.co.uk/help/techdoc/ref/format.html
OriginalL'auteur Tetra