exp(log(x))-x?
2 次查看(过去 30 天)
显示 更早的评论
Analytically, exp(log(x))-x should give zero.
But In matlab, it is not zero
x=linspace(1,10,10);
exp(log(x))-x;
for x=1 to 10, the answer is
0
0
-4.44089209850063e-16
0
0
0
0
-1.77635683940025e-15
1.77635683940025e-15
1.77635683940025e-15
what is happening?
and how can I fix this?
1 个评论
Adam
2016-4-22
It is 0 to within a certain precision. The results of mathematical operations involving doubles rarely produce the exact results due to the precision of the representation.
Why do you need to "fix it"? In what context are you using it?
回答(2 个)
John D'Errico
2016-4-22
You cannot "fix" it, not as long as you work with numbers represented in floating point arithmetic. Floating point arithmetic is not mathematics. The two look a lot alike, but they are not the same.
The only fix available is in your mind, learning what you can and cannot do. Of course, if you are willing to always work in symbolic form, then you can resolve this. Your code will be painfully slow then.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!