Matlab returns different values with two equivalent functions

15 vues (au cours des 30 derniers jours)
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 commentaires
darova
darova le 8 Mar 2020
>> f(0.925)
ans =
-24.2489
>> F(0.925)
ans =
-24.2489
Works as always
Marcos Baños
Marcos Baños le 8 Mar 2020
ans =
-24.2489252551835
ans =
-24.2489252551834
as you see it's not the same, and with 1.53 the difference is bigger

Connectez-vous pour commenter.

Réponse acceptée

Thiago Henrique Gomes Lobato
Modifié(e) : Thiago Henrique Gomes Lobato le 8 Mar 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 commentaires
Stephen23
Stephen23 le 8 Mar 2020
Modifié(e) : Stephen23 le 8 Mar 2020
Marcos Baños
Marcos Baños le 10 Mar 2020
thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by