Different results for two equal functions

I am comparing these two functions:
f = sqrt(x.^2+1.0)-1.0
g = x.^2./(sqrt(x.^2+1.0)+1.0)
x = [8^-6 8^-7, 8^-8]
Even though f = g, I get slightly different values e.g. for x = 8^-7 I get f(x) = 1.136868377216 160 e-13 and g(x) = 1.136868377216 096 e-13.
I'm guessing this has something to do with the reduction of significant digits, however I don't know which results are more reliable. My guess is that function f = sqrt(x.^2+1.0)-1.0 is more precise because we only have one x in it but I am not sure...

 采纳的回答

The two functions you show algebraically yield identical values only for x = 0.

3 个评论

Well this is my exact code and I get same values....
x= [8^-1 8^-4 8^-5 8^-6 8^-7 8^-8 8^-9]
y = x.^2./(sqrt(x.^2+1.0)+1.0)
f = sqrt(x.^2+1.0)-1.0
Apologies, I had a typo when I did the calculations. The two do come out the same.
To more precision the 8^(-7) answer is
1.136868377216095673908443130184740364*10^(-13)
so your g(x) formula is more precise.
Thank you but do you know what might be the reason to that? I mean why g(x) is more precise?

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by