How to get Matlab to return answers with ten-digit accuracy?
Show older comments
Hi,
Answers returned by Matlab (e.g. from the ode45 solver, or from the wrapTo2Pi function that maps accumulating angles to [0, 2pi] ) seem to be within four digits of accuracy; that is, it rounds to four digits after the decimal place.
I'm currently studying convergence and root-finding and would like ten-digit accuracy -- so, a bit beyond the standard function tolerance of 1e-6 or 1e-7.
How can I get Matlab answers with ten-digit accuracy?
Thanks,
Answers (2)
Mario Malic
on 17 Sep 2020
Edited: Mario Malic
on 17 Sep 2020
Write this on start of your script
format long
If you're reading the values from the workspace, find tab 'View' and under 'Format', click 'Long Fixed Decimal'.
Edit: this only changes displayed output, see James' answer.
10 Comments
Mario Malic
on 17 Sep 2020
Very beginning.
James Tursa
on 17 Sep 2020
Edited: James Tursa
on 17 Sep 2020
The "format" command only changes the displayed output ... it does not change the precision of the underlying calculations which will still be double precision. You can issue the format command anytime you like, either manually at the command line before you run the script or put it as a line anywhere in your script. Changing the display format will not change the answers from ode45 ... it simply changes how they are displayed.
James Tursa
on 17 Sep 2020
How are you transferring your solutions to the other function? That step you need to be careful so you don't lose precision.
James Tursa
on 17 Sep 2020
"... perhaps there are no issues with the precision of the inputs f(x) into the function g, since I am calling f directly in the script file for g ..."
Correct. There are no precision loss issues with this approach.
"... the potential for issues lies in me manually inputting the vector x in the function g ..."
Yes. This is where you need to be careful. It would be best to feed the results directly, as above. E.g., saved in a variable. Or you could save the results in a mat file and then load them later on ... this will also preserve the full precision. Try to avoid manually copying numbers from the screen as this will be prone to losing precision if not done correctly.
Walter Roberson
on 17 Sep 2020
format long g comes close to giving complete precision, but in some cases you may need two more digits beyond what that format gives you. It is safest to fprintf() your values with %.17g
Noob
on 18 Sep 2020
Noob
on 18 Sep 2020
William
on 17 Sep 2020
0 votes
The answers returned by Matlab actually have the full available precision, but for display purposes they are printed in the command window with a much smaller precision. You can change this default behavior by typing 'format long' or 'format longEng' in the command window.
1 Comment
Walter Roberson
on 17 Sep 2020
Personally I favor format long g
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!