MATLAB: Help Please! Numerical methods help

error and numerical methods

I need help I am trying to understand why this does not work properly I know logspace starts off the with value of 10 to the a and ends with 10 to the b and the last number spaces out
The aS (absolute error) and rS (relative error) should be very small but it is not
here is my code:
x=logspace(-12,12,100); s =.5.*(exp(x)-exp(x)); S = sinh(x); aS = abs((s-S)/(S)); rS = abs((s-S)); %This is the actual function for sinh(x) and that is why it is such % a small value for sinh(x) loglog(aS,'b') hold on loglog(rS,'r')

Best Answer

You are missing a dot (.) and a minus (-).
x=logspace(-12,12,100);
s =.5.*(exp(x)-exp(-x));
S = sinh(x);
aS = abs((s-S)./(S));
rS = abs((s-S));
loglog(aS,'b')
hold on
loglog(rS,'r')
.
.
As far as to why there are differences between the two results, look at your range for x, then remember that MATLAB uses floating point arithmetic. In the exponential formula, you are finding the difference between two numbers which have vastly different magnitudes. I suspect the built-in SINH function is specially formulated to avoid these kinds of roundoff errors.
Related Question