Some difference between MatLab and VS calculation

7 visualizaciones (últimos 30 días)
Igor Arkhandeev
Igor Arkhandeev el 30 de Nov. de 2020
Comentada: Igor Arkhandeev el 30 de Nov. de 2020
Hello! The question is very simple. I try to calculate exp(-8.7) in MatLab and Visual Studio software. My simple code is
fprintf("%.30f", exp(-8.7));
The results in Visual Studio 2019 and MatLab R2018b below:
0.000166585810987633539366828406 (VS)
0.000166585810987633512261774094 (MatLab)
Who can tell me what result more correct?

Respuesta aceptada

John D'Errico
John D'Errico el 30 de Nov. de 2020
Editada: John D'Errico el 30 de Nov. de 2020
Which is more correct? Neither is correct in the bolded digits you post. In fact, the digit preceding that is also incorrect, in both cases.
exp(vpa('-8.7'))
ans =
0.00016658581098763341149213050712475
In both cases, the digits beyond 987633... are garbage.
Both tools are computing an essentially double precision computation of exp(x), but the result will be correct only to roughly 16 significant digits. To go beyond that point is to compute meaningless dreck.
If you want to know which is "more" correct, I guess MATLAB wins here by a hair. It as slightly less incorrect in the last digit before it begins to diverge from the "correct" value.
As another point of comparison, below i use code I wrote myself (in MATLAB), so I know it to be correct. Here, 60 decimal digits are used, then rounded so only 50 were displayed:
exp(hpf('-8.7',[50,10]))
ans =
0.00016658581098763341149213050712474673081123537780704
And if you don't believe me (nobody ever seems to) then Wolfram Alpha tells me it is:
0.0001665858109876334114921305071247467308112353778070434276
So my rounding to 50 digits seems to have been correct.
  1 comentario
Igor Arkhandeev
Igor Arkhandeev el 30 de Nov. de 2020
Wow! To be honest, I'm just thrilled! Thank you very much! I certainly haven't encountered this before, but I now have food for thought.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by