what if I need more decimal digits in calculated results ? ( e.g. 50 or 80 decimal digits )
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
What should I do to increase the decimal digits ? FOR EXAMPLE :
clear all
clc
x=(-0.1);
y=(0);
fprintf(' i x \n')
fprintf(' --- ------------- \n')
for i=1:5;
fx=(x(i))^3-(x(i))^2+2;
fxx=3*(x(i))^2-2*(x(i));
y(i)=x(i)-(fx/fxx);
fy=(y(i))^3-(y(i))^2+2;
fyy=3*(y(i))^2-2*(y(i));
x(i+1)=x(i)+([fy-fx]/fyy);
end
for i=1:length(x)
fprintf('%2i %18.15f\n',i,x(i))
end
THE RESULTS ARE
i x
--- -------------
1 -0.100000000000000
2 -3.119140528362807
3 -1.474069695697443
4 -1.017351956185236
5 -1.000001047082565
6 -1.000000000000000
0 Commenti
Risposte (3)
KSSV
il 25 Gen 2017
fprintf('%2i %18.15f\n',i,x(i))
In the fprintf format, increase the number of decimal points. At present it prints 15 points, you change 15 to your desired number. But why you want 50 or 80 decimal points?
3 Commenti
Guillaume
il 25 Gen 2017
This is a very misleading answer! You can't just keep increasing the number of digits in fprintf and hope it's going to give you more valid digits. Certainly putting 50 or 80 is utterly pointless. The maximum number of precision digits of IEEE double is around 17 digits.
To get more precision you need a different storage format than double. Hence vpa.
Jan
il 25 Gen 2017
Modificato: Jan
il 25 Gen 2017
See https://www.mathworks.com/help/symbolic/vpa.html : "Variable-precision arithmetic", exactly what you need.
Adam
il 25 Gen 2017
You probably have to use the Symbolic Math Toolbox for more accuracy though I don't have this so am not familiar with its usage. Numbers get truncated when represented as doubles as there are only a certain amount of bits used and these represent generally no more than about 17 decimal places. It doesn't matter how many you ask for in a fprintf statement as they won't be there.
Using the Symbolic Math Toolbox my understanding is that equations remain in symbolic form rather than their results getting truncated in doubles so that you can maintain the precision. How you then print the results from that though I'm not sure as I've never done it. I assume it isn't difficult though.
But if you don't have Symbolic Toolbox you are stuck with ~15-17 decimal places. Usually that is enough for most work, though not all.
Vedere anche
Categorie
Scopri di più su Numeric Types in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!