How to get around round off error?

2 vues (au cours des 30 derniers jours)
ARSHA MAMOOZADEH
ARSHA MAMOOZADEH le 8 Juil 2019
Commenté : Stephen23 le 8 Avr 2021
Hello all, I read about the round off error that MATLAB experiences with double precision numbers, and it being caused by how MATLAB stores numbers in binary. I was wondering if there was any way to get around this. Specifically I would like to subtract 0.021557700000000 from 0.021557800000000 without any round off error. The answer should be 1e-7 but MATLAB gives -9.999999999940612e-08. I tried to convert the numbers to symbols and subtract symbolically but I got the same error. Any ideas?
  11 commentaires
ARSHA MAMOOZADEH
ARSHA MAMOOZADEH le 8 Juil 2019
Yep. Currently I am testing this out...
A=(215577/10000000);
B=(215578/10000000);
C=(215579/10000000);
BA=B-A;
CB=C-B;
BA_eps=eps(BA)
CB_eps=eps(CB)
if BA_eps == CB_eps
B=C;
A=C;
end
This seems to be working, and I think I am going to add a tolerance on the if statement. Another thing I made was this however it still has the round off error.
F21=round(F2-F1,16)
F32=round(F3,F2,16)
16 is the maximum number of decimals my input has.
Stephen23
Stephen23 le 8 Avr 2021
"16 is the maximum number of decimals my input has."
Then any attempt to define a higher precision number for your operations is totally meaningless.
I very much doubt that your input data were even measured to 16 significant digit accuracy, given that some of the most accurate measurements in science are around the same order:

Connectez-vous pour commenter.

Réponses (1)

Zakaria moeri
Zakaria moeri le 8 Avr 2021
take a look at vpa and digits method already exist in matlab documentation.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by