Matlab returns different values with two equivalent functions
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Marcos Baños
el 8 de Mzo. de 2020
Comentada: Marcos Baños
el 10 de Mzo. de 2020
Let's say I have two functions:
f = @(x) (1.01.*exp(4.*x) - 4.62.*exp(3.*x) - 3.11.*exp(2.*x) + 12.2.*exp(x) - 1.99)
F = @(x) (((1.01.*exp(x) - 4.62).*exp(x)-3.11).*exp(x) + 12.2).*exp(x) - 1.99
These two functions are equivalent but when I want to execute with MATLAB it gives me different results with the same input. (for example with 0.925)
I would like to ask why cause this situation and which one has should I trust.
Thanks in advance!
2 comentarios
Respuesta aceptada
Thiago Henrique Gomes Lobato
el 8 de Mzo. de 2020
Editada: Thiago Henrique Gomes Lobato
el 8 de Mzo. de 2020
The difference between then in my computer with your example is -3.197442310920451e-14 (depending of your processor may be slightely different but still extremely low). This difference is negletible and can be regarded as numerical/approximation error between taking the exp of a number and multiplying two (to four, in your case) exp's. You can reproduce it easily with an easier example:
exp(3.245*2)-exp(3.245)*exp(3.245)
ans =
-1.136868377216160e-13
The results are then actually the same and you can trust both of them with the given accuracy, which should be enough for almost any application you may think.
6 comentarios
Stephen23
el 8 de Mzo. de 2020
Editada: Stephen23
el 8 de Mzo. de 2020
"So it means that you have not enough precision in MATLAB to produce the correct answer?"
This is not specific to MATLAB, it is due to how all modern computers store fractional values as binary floating point numbers, and would occur with any numeric application that uses the very-efficient inbuilt floating point operations of your CPU. Read these to know more:
This is worth reading as well:
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!